博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL优化:explain using temporary
阅读量:5840 次
发布时间:2019-06-18

本文共 505 字,大约阅读时间需要 1 分钟。

什么时候会使用临时表:group/order没设计好的时候

1.order没用索引

2.order用了索引, 但不是和where相同的索引

3.order用了两个索引, 但不是联合索引

4.order用了联合索引, 但排序顺序不同序 

原因:

1.不用说

2.mysql一次只能用一个索引

3.4 其实原因一样, 和索引的结构有关:

索引是一个B+树, 比如一个联合索引如下(x, y):

(2, 5) - (6, 10)  (7, 3) - (10, 19) ...

如果是联合索引, 排序同序, 取结果的时候直接从B+树从后向前或者从前向后取就可以了,

但如果是两个索引, 显然不能直接从一个B+树取值. 

如果顺序不相同, 例如ASC, DESC, 有两个索引(2, 5), (2,7), 当Mysql取到第一个(2,5)时, 并不知道后面还有没有(2, x), 所以不能先把(2, 5)返回, 这时候就要用到temporary来先存着(2, 5)这行, 等(2, x)都被查出来了, 再把临时表从后向前返回.

转载于:https://www.cnblogs.com/bianzy/p/6529406.html

你可能感兴趣的文章
maven 加入json-lib.jar 报错 Missing artifact net.sf.json-lib:json-lib:jar:2.4:compile
查看>>
Java多线程入门Ⅱ
查看>>
JSONObject、JSONArray
查看>>
【枚举】Codeforces Round #394 (Div. 2) C. Dasha and Password
查看>>
phpstorm配置phpunit (thinkphp 框架)
查看>>
opencv 操作本地摄像头实现录像
查看>>
【BZOJ】1741: [Usaco2005 nov]Asteroids 穿越小行星群
查看>>
JVM与GC
查看>>
easyUI的控件
查看>>
2018省赛赛第一次训练题解和ac代码
查看>>
The 18th Zhejiang University Programming Contest Sponsored by TuSimple
查看>>
用smarty来做简易留言系统,明细步骤简单操作
查看>>
Shiro~
查看>>
iframe中访问父页面的元素
查看>>
Spring系统学习:Spring整合Junit提示不出来问题
查看>>
VLSM和CIDR
查看>>
U3D开发中提升流畅度的几个方法
查看>>
Android 死锁和重入锁
查看>>
面试题:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序...
查看>>
mysql--测试前缀索引能否用于order by 或者 group by
查看>>