2011-06-24 10 views
2

(わからない、これは以前に議論されてきたが...)カテゴリのSQLを構築する場合「sort_unionを使用する」とはどういう意味ですか?

例のカテゴリデータ:

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

hardwarehardware : *

の親カテゴリになります

クエリデータベースにapiを構築することを検討しているとき

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

sort_union手段は何

Using sort_union(PRIMARY,some_index); Using where 

(実行計画で)上記の復帰?
いいですか?悪い?避けるために?


は(私は、より多くの最適化方法に
をクエリ全体を書き換える可能性が理解しますが、私はAPI全体を再構築するためのいくつかの制約がある)


MySQLバージョン5.1

は、

答えて

4

sort_unionは、2つ以上のOR演算を実行するwhere句がある場合に使用されます.SQLは、index_mergeを使用するよりも優れていると考えています。詳細については

、要するにsee the MySQL docs

、それは悪くはない(私見)です。これは、両方のインデックスから最初に行をフェッチしてから、それらをソート - 結合するためです。

+0

素敵な言い方をすると、DBはバージョン5.1で動作しています – ajreal

+0

@ajreal幸いにも;その機能は5.1と同じです:[5.1 doc page](http://dev.mysql.com/doc/refman/5.1/en/index-merge-optimization.html#index-merge-sort-union) – Yhn