首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于多个WHERE条件优化Select查询

基于多个WHERE条件优化Select查询
EN

Stack Overflow用户
提问于 2011-05-02 06:45:47
回答 3查看 2.4K关注 0票数 1

我目前是一个初级开发人员,正在开发一个具有Java/DB2后端的web应用程序,我有一些SQL查询运行得相当慢。数据库现在还没有优化,所以肯定有改进的空间。唯一的问题是我没有这方面的经验,也没有人能帮助我。

代码语言:javascript
复制
SomeTableName
MyPkey
ColOne
ColTwo
ColThree
ColFour
ColFive

我正在尝试找出如何针对这样的查询优化数据库:

代码语言:javascript
复制
SELECT * FROM SomeTableName WHERE ColOne = 'some value'
SELECT * FROM SomeTableName WHERE ColOne = 'some value' AND ColTwo = 'another'
SELECT * FROM SomeTableName WHERE ColFive = 11 AND ColThree = 'hello world'
SELECT * FROM SomeTableName WHERE ColOne = 'hi' AND ColTwo = 'val1' AND ColThree = 'val2' AND ColFour = 'val3' AND ColFive = 'val4'

我试图描述的是,SELECT语句具有具有不同列组合和值的WHERE条件,我不确定如何优化这样的查询。

有什么建议吗?

编辑:我不确定DB2是否添加了自己的优化,但可以肯定的是,没有在任何列上设置索引。

EN

回答 3

Stack Overflow用户

发布于 2011-05-02 06:58:22

你绝对应该在你的数据库上使用索引。它们使得插入和更新的成本更高,但您的查询将运行得更快,因此它们总体上可能是一个很大的胜利。索引对于具有大量值的列是最有效的(例如,对于性别列就不是那么有效)。它们对于where条件中经常引用的列更有效。在尝试索引时,请确保使用SQL EXPLAIN动词或db2expln之类的工具查看数据库的查询优化器是否正在利用它们。

票数 0
EN

Stack Overflow用户

发布于 2011-05-02 07:28:20

从您的示例来看,仅通过索引colOne就可以获得一定的性能。基本上,以与要使用的索引相同的顺序使用列。

票数 0
EN

Stack Overflow用户

发布于 2011-05-02 07:34:48

您可以通过在( colOne,colTwo,colThree,colFour,colFive )上创建索引来获得不错的性能提升。查询1、2和4都将使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5851970

复制
相关文章

相似问题

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