私は最近、EXPLAIN が SQL に提供する情報を活用する方法を発見し、EXPLAIN 句を使用してすべてのクエリを実行し、最適化されていないものがあるかどうかを確認する必要があると考えました。私が持っていることが判明し、それについて何をすべきかわかりません..
このクエリを説明すると
SELECT `id`,`username`,`first_name`,`last_name`
FROM `users`
WHERE (`username` LIKE '%kelon%'
OR `email` LIKE '%kelon%'
OR `first_name` LIKE '%kelon%'
OR `last_name` LIKE '%kelon%'
OR `facebook` LIKE '%kelon%'
OR `twitter` LIKE '%kelon%'
OR `skype` LIKE '%kelon%')
ALL
これは明らかにtype
最悪のシナリオであり、すべての列にインデックスがあるNULL
にpossible_keys
もかかわらず、私は得ます。数百万レコードの場合に mysql が暴走しないように、この厄介なクエリを最適化するにはどうすればよいですか?