首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询成本

MySQL查询成本
EN

Stack Overflow用户
提问于 2011-02-10 00:42:10
回答 1查看 989关注 0票数 1

有人能告诉我以下查询昂贵的理论上的区别吗?

  • SELECT * FROM posts WHERE category IN(1)
  • SELECT * FROM posts WHERE category IN(1,2)
  • SELECT * FROM posts WHERE category IN(1,2,3)

..。等等..。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-10 00:44:37

从理论上讲,如果您有一个类别索引,并且表足够大,而且索引是选择性的,那么

代码语言:javascript
复制
Cost for 1st as baseline = N
Cost of 2nd = 2 x N
Cost of 3rd = 3 x N

如果没有索引,或者索引没有足够的选择性(例如,category=1覆盖表的10% ),那么它将执行表扫描。如果表很小,它甚至不会使用索引。在这种情况下

代码语言:javascript
复制
Cost of 1st as baseline = N + X
Cost of 2nd = N + 2X
Cost of 3rd = N + 3X

原因是全表扫描的成本是N。在扫描过程中,它将使用X时间选择整个行(select *),因此在处理更多的类别时会涉及更多的内容,但不会影响扫描表所需的基线时间。

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

https://stackoverflow.com/questions/4952231

复制
相关文章

相似问题

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