假设我有一个包含 10M enries 的表,当我有这个查询时:
SELECT column_name, count(column_name)
FROM my_table
GROUP BY column_name
需要很长时间才能完成。如果我知道 column_name 将具有给定的范围,并将我的查询拆分为不同的查询,其中每个查询如下所示:
SELECT column_name, count(column_name)
FROM my_table
WHERE column_name BETWEEN value_a AND value_b
GROUP BY column_name
我设法让它反应更快。例如,通过检查时间,如果将其拆分为 10 个查询,则每个查询的响应速度快 10 倍。
所以,我想,施加这个范围会让我的查询更快。
但是,在另一个表上,具有相似的键和列,情况并非如此。无论我是否有两者之间的时间,都需要同样的时间。
需要注意的一些事情是:
- 第一个 DB 是 SQL,第二个是 IBM DB
- 在第一种情况下,时间由我执行查询的 UI 工具测量,第二次在 unix 中按时间测量。
- 我不是在比较时间,我只是对使用 between 是否可以减少我的查询时间感兴趣?
- column_name 不是主键,但它是主键的一部分(主键在多个列上)
所以,我的问题是,是这种情况还是真的取决于?'between' 会减少查询时间吗?