日に日に分からんことが増えていく…

プログラマー初心者としての日々を学んでいることを記録していく。

where句で"OR"を使いたい場合(index)

MySQLで"OR"を用いる時のインデックスがわからない。 結局、UNIONでがっちゃんこするしかなさそう。

mysql> SELECT COUNT(*) FROM table WHERE columnA = value1 OR columnB = value2;
+----------+
| COUNT(*) |
+----------+
|     1616 |
+----------+
1 row in set (9.92 sec)

mysql> SELECT COUNT(*) FROM (SELECT * FROM table WHERE columnA = value1
UNION SELECT * FROM table WHERE columnB = value2) T;
+----------+
| COUNT(*) |
+----------+
|     1616 |
+----------+
1 row in set (0.17 sec)

stackoverflow.com