2007-05-28
■[MySQL][SQL][SQLチューニング]MySQLのSQLチューニング(IN 演算子)
なかなか面白い結果が出たので備忘録。
TBLテーブルに対し add index idx(COL0,COL1)としてある状況では、
SELECT A.* FROM TBL A WHERE A.COL0 = "hoge" AND A.COL1 IN ('A', 'B', 'C');
よりも
SELECT A.* FROM TBL A JOIN ( SELECT 'A' COL1 FROM DUAL UNION SELECT 'B' COL1 FROM DUAL UNION SELECT 'C' COL1 FROM DUAL ) B ON A.COL1 = B.COL1 WHERE A.COL0 = "hoge";
とやったほうがパフォーマンスが劇的によくなりました。
同じ結果なのに歴然とパフォーマンスが変わるところがSQLチューニングの醍醐味ですね。
#DUALはダミー表です。ORACLE経験者なら分かると思いますが念のため補足。