我正在数据库中运行一些查询,希望提高性能,并创建了一些索引,但我仍然认为响应时间太长了,所以我想看看是否可以创建一个更好的或另一个索引来提高速度。
我的表模式(我认为最大的瓶颈是这样的)如下所示:
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)有趣的是 SDD 属性,它包含日期(例如10-05-20),在我的查询中,我进行了如下范围搜索: 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上尝试了几个索引,甚至一个集群索引,但是到目前为止,我得到的最好的结果就是上面的索引。
任何建议都会很感激的。
由衷地
梅斯蒂卡
发布于 2012-04-12 16:28:29
SELECT * FROM YourTable where SDD BETWEEN '2010-05-03' and '2010-05-08'SDD是一个很好的索引列。如果使用带有BETWEEN的索引列,则性能优于>=或<=。
发布于 2010-05-20 15:53:34
如果您只是将查询更改为
SELECT * FROM YourTable where SDD >= '2010-05-03' and SDD < '2010-05-08'这将告诉您,是否是日期限制导致了经济放缓或其他原因。此外,请确保数据库将"2010-05-08“解释为日期,而不是字符串。有些dbs有一个特殊的日期语法,您可以尝试
SELECT * FROM YourTable where SDD >= DATE('2010-05-03') and SDD < DATE('2010-05-08')https://stackoverflow.com/questions/2875418
复制相似问题