in 改写优化案例
l凌晨1點開發遷移業務告知sql響應有問題,趕緊爬起來看看
6000w的大表,沒走索引導致查詢了50s,執行計劃如下
desc select a, b, c, d from table where FIND_IN_SET(a,'MD5value1,MD5value2'); +----+-------------+------------+------+---------------+------+---------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+------------+------+---------------+------+---------+------+----------+-------------+ | 1 | SIMPLE | table | ALL | NULL | NULL | NULL | NULL | 60435142 | Using where | +----+-------------+------------+------+---------------+------+---------+------+----------+-------------+ 1 row in set (0.01 sec)使用了in導致查詢沒有走索引改寫為union all sql秒出結果
select a, b, c, d from table where a='md5value1' union all select a, b, c, d from table where a='MD5value2';看下執行計劃
+----+--------------+------------+-------+---------------+---------+---------+-------+------+-----------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+--------------+------------+-------+---------------+---------+---------+-------+------+-----------------+ | 1 | PRIMARY | table | const | PRIMARY | PRIMARY | 302 | const | 1 | NULL | | 2 | UNION | table | const | PRIMARY | PRIMARY | 302 | const | 1 | NULL | | NULL | UNION RESULT | <union1,2> | ALL | NULL | NULL | NULL | NULL | NULL | Using temporary | +----+--------------+------------+-------+---------------+---------+---------+-------+------+-----------------+ 3 rows in set (0.03 sec)
?
轉載于:https://www.cnblogs.com/weiwenbo/p/9257414.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: Windows 下使用 BaiduExp
- 下一篇: 图像分类、检测,语义分割等方法梳理