首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL资源利用率优化

MySQL资源利用率优化
EN

Stack Overflow用户
提问于 2013-04-22 21:38:34
回答 1查看 33关注 0票数 1

有两个查询:

代码语言:javascript
复制
select * from X inner join Y on X.id=Y.id where X.text = "ABC";

代码语言:javascript
复制
select * from X inner join Y on X.id=Y.id and X.text = "ABC";

在执行过程中,内存利用率是否有足够的差异,哪一个不那么贪婪?请证明你的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-22 21:48:32

在类似这样的简单select中,查询优化器应该将两个查询优化为相同的代码。

哪个查询更贪婪取决于您的索引。

如果在Y.id上有索引,但在X.text上没有索引,bot查询将执行相同的操作。

如果在Y.id上没有索引,在X.text上也没有索引,你就得走运了。如果MySQL进行了正确的优化,那么第一个查询可能会更快,因为它会在连接之前应用where (这将是一个嵌套循环连接)。

如果在Y.id和X.text上有and索引,则第一个查询会更快,因为它可以利用这两个索引。它将首先应用where子句,然后执行索引连接。

基本规则:不要在JOIN子句的前导表(X)上应用where条件。一定要在join子句中包含连接表(Y)的where条件(尤其是在执行左连接时)。

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

https://stackoverflow.com/questions/16148544

复制
相关文章

相似问题

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