影响MySQL查询性能的案例
发布时间:2019-05-17 16:59:10 所属栏目:站长百科 来源:风度玉门
导读:副标题#e# 在互联网应用中,通常情况下我们查询DB 只会使用简单的、查询效率较高的SQL,大部分的逻辑都需要在代码中去实现。今天介绍一下,一些看起来简单的SQL,也有可能导致查询性能的低下。 WHERE条件字段使用函数 假设我们有如下创建表的语句 mysqlCREA
|
上图中的第 3步可以认为是执行如下操作($L2.tradeid.value 是 utf8mb4 的字符值):
隐式转换后的执行SQL 如下:
由此看来,执行的过程中对 trade_detail 的查询字段 tradeid 使用了函数,因此不走索引。但是当我们反过来查询时,也就是从一条 trade_detail 去关联对应的 trade_log 时,会是什么情况呢?
由上图可以看出,第二次查询使用到了 tradelog的 tradeid 索引了。当第一个执行计划找到 trade_detail 中 id=4 的记录后(R4),再去tradelog 中关联对应的记录时,执行的SQL 如下:
此时 等号右边的 value 值需要做隐式转换,并没有在索引字段上做函数操作,如下所示:
解决方案 对于字符集不同造成的索引不可用,可以使用如下 2 中方式去解决。
(编辑:网站开发网_安阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐

