【问题标题】:Efficiency of Select query [closed]选择查询的效率[关闭]
【发布时间】:2014-12-20 10:25:27
【问题描述】:

考虑两个查询,

  1. 从 size = 'L' 的表中选择 *;
  2. 从 id IN (691,12,123,5123,....) 的表中选择 *; # id 是表的主键。并涵盖所有 size ='L' 的情况。

现在考虑一个有 200 万条记录的表,我将触发这两个查询。

这两个查询中哪一个会运行得更快,为什么?

考虑一下这种情况,系统会根据选择的选项过滤掉数据。

【问题讨论】:

  • size 是列吗?如果有,size 上是否有索引?
  • 大概有 20% 到 25% 的行大小为“L”?这是一个很大的 IN()!

标签: mysql sql database filter sqlanywhere


【解决方案1】:

简而言之:答案取决于size='L' 的行数。如果有很多行,第二个会更有效,因为size 上的索引很慢(基数)。

【讨论】:

  • 嗨,本尼,这两个查询的计数保持不变。现在哪一个更有效。
  • 执行Select Count(*) as lCount from table where size = 'L' 并将结果与​​Select Count(*) as allCount from table 进行比较。如果 lCount 与 allCount 相比非常小,您将看不到任何区别。如果 lCount 比 allCount 大,那么第二个查询(主键)会更快。
  • 你能解释一下原因吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-15
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
相关资源
最近更新 更多