“使用sort_union”是什么意思?

时间:2011-06-24 05:14:54

标签: mysql sql-execution-plan

(不确定之前是否已经讨论过......)

为类别

构建SQL时

示例类别数据:

ID | NAME
--------------------------
1  | hardware
2  | hardware : notebooks
3  | hardware : phones
4  | hardware : desktops
5  | review
6  | review : photo gallery

hardware将是hardware : *

的父类别

当我考虑将api构建到查询数据库时

desc select * from category 
where id=1 or 
name like concat((select name from category where id in(1)), '_%');

以上回报(在执行计划中)

Using sort_union(PRIMARY,some_index); Using where

sort_union的含义是什么? 好吗?坏?要避免吗?


(理解我可以将整个查询重写为更优化的方式,
但是我有一些限制要重建整个api)


mysql版本5.1

1 个答案:

答案 0 :(得分:5)

当你有一个where子句时,你会使用sort_union,你正在使用两个或更多的OR,​​MySQL认为它比使用index_merge更好。

有关详细信息,请see the MySQL docs

简而言之,它并不坏(imho);因为它会先排序两个索引中的行,然后再排序它们。