【发布时间】:2017-03-09 11:54:42
【问题描述】:
假设我有一个查询,
SELECT * FROM tab1 WHERE col1 BETWEEN 111 AND 111;
或查询
SELECT * FROM tab1 WHERE col1=111;
两者在性能上有什么区别吗?
表可以很大,被多次查询。
编辑:查询在 WHERE 子句中最多可以有 15 个字段,例如 col1。此外,列始终是主键的一部分。
【问题讨论】:
-
什么是表索引列?
-
第二次查询可能会稍微快一些。是否可测量?
-
我预计不会有太大的不同——如果有的话。但是,既然可以使用
=,为什么还要使用BETWEEN? -
第二个可能性能更高,但是在这样简单的查询中,引擎应该足够聪明,可以将第一个转换为第二个(实际上,要弄清楚它们是一个并且相同)。 @ypercubeᵀᴹ - 我猜这是一个参数化查询,所以有时它最终会得到
BETWEEN 111 AND 111。 -
据我所知没有任何索引。并且该列是键的一部分。原因是该值可能相等也可能不相等。目前我们对这两种情况(相等或不相等)使用不同的查询。我想知道这是否真的有必要。查询最多可以有 15 个这样的列,但始终是键的一部分。
标签: sql performance db2