(不确定之前是否已经讨论过......)
为类别
构建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
答案 0 :(得分:5)
当你有一个where子句时,你会使用sort_union,你正在使用两个或更多的OR,MySQL认为它比使用index_merge更好。
有关详细信息,请see the MySQL docs
简而言之,它并不坏(imho);因为它会先排序两个索引中的行,然后再排序它们。