首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库:帮助我获得表和查询的正确索引(Es)

数据库:帮助我获得表和查询的正确索引(Es)
EN

Stack Overflow用户
提问于 2010-05-20 15:45:15
回答 2查看 78关注 0票数 0

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

我的表模式(我认为最大的瓶颈是这样的)如下所示:

代码语言:javascript
复制
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’。

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

代码语言:javascript
复制
INDEX sdd ON R_D (SDD, numa, numt, price, id)

问题是,当我做一个距离很大的搜索,比如2010-05-03和2010-06-04,它需要大约6-10秒来执行查询,我真的很想对它进行调优。

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

任何建议都会很感激的。

由衷地

梅斯蒂卡

EN

回答 2

Stack Overflow用户

发布于 2012-04-12 16:28:29

代码语言:javascript
复制
SELECT * FROM YourTable where SDD  BETWEEN  '2010-05-03' and '2010-05-08'

SDD是一个很好的索引列。如果使用带有BETWEEN的索引列,则性能优于>=<=

票数 1
EN

Stack Overflow用户

发布于 2010-05-20 15:53:34

如果您只是将查询更改为

代码语言:javascript
复制
SELECT * FROM YourTable where SDD >= '2010-05-03' and SDD < '2010-05-08'

这将告诉您,是否是日期限制导致了经济放缓或其他原因。此外,请确保数据库将"2010-05-08“解释为日期,而不是字符串。有些dbs有一个特殊的日期语法,您可以尝试

代码语言:javascript
复制
SELECT * FROM YourTable where SDD >= DATE('2010-05-03') and SDD < DATE('2010-05-08')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2875418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档