【发布时间】:2023-03-23 20:25:01
【问题描述】:
我目前是一名初级开发人员,正在开发一个带有 Java/DB2 后端的 Web 应用程序,并且我有一些运行速度很慢的 SQL 查询。现在的数据库没有优化,所以肯定有改进的余地。唯一的问题是我没有这方面的经验,没有人可以帮助我。
SomeTableName
MyPkey
ColOne
ColTwo
ColThree
ColFour
ColFive
我试图弄清楚如何针对以下查询优化数据库:
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 是否添加了自己的优化,但可以肯定任何列上都没有设置索引。
【问题讨论】:
-
您应该首先查看表定义,尽管我对 Java 或 DB2 了解不多,因此无法为您提供具体帮助。在大多数 sql 情况下,通过确保有适当的索引,可以大大改进此类查询。
-
数据库没有任何索引。我之前想过创建一个,但不确定如何设置(即,我应该每列创建一个索引吗?还是应该在一个索引中有多个列?)
-
您几乎正在做您可以用数据库做的最简单的事情。如果它们运行缓慢,您应该向表中添加索引。没有它们,您每次都在进行全表扫描。
标签: sql db2 query-optimization