0

我正在我的数据库中运行一些查询,并希望提高性能并创建了一些索引,但我仍然认为响应时间很棒,所以我想看看我是否可以创建一个更好或另一个索引来提高速度。

我认为具有最大瓶颈的表的架构如下所示:

R_D(  **id** int not null,  **SDD** date not null,  numa int,   numt int,   price decimal,  
FOREIGN KEY (room_type_id) REFERENCES R_T (id)

有趣的是包含日期(例如 2010-05-20)的SDD属性,在我的查询中,我进行了这样的范围搜索: SDD >= '2010-05-03' 和 SDD < '2010-05-08'

我拥有的确实提高了性能的索引是

INDEX sdd ON R_D (SDD, numa, numt, price, id)

问题是,当我进行 2010-05-03 和 2010-06-04 等距离很远的范围搜索时,执行查询大约需要 6-10 秒,我真的很想调整它。

我在 SDD 上尝试了几个索引,甚至一个集群索引,但到目前为止我得到的最好结果是上面的索引。

任何建议将不胜感激。

真挚地

梅斯蒂卡

4

2 回答 2

1
SELECT * FROM YourTable where SDD  BETWEEN  '2010-05-03' and '2010-05-08'

SDD是好的索引列。如果你使用BETWEEN性能比>=或性能好的索引列<=

于 2012-04-12T16:28:29.727 回答
0

如果您只是将查询更改为

SELECT * FROM YourTable where SDD >= '2010-05-03' and SDD < '2010-05-08'

这将告诉您是日期限制导致减速还是其他原因。此外,请确保数据库将“2010-05-08”解释为日期,而不是字符串。一些数据库对日期有特殊的语法,你可以试试

SELECT * FROM YourTable where SDD >= DATE('2010-05-03') and SDD < DATE('2010-05-08')
于 2010-05-20T15:53:34.070 回答