12列を超えるテーブルを取得しました。これは、最新の7つのレコードを取得するために使用されるmysqlクエリです。
SELECT * FROM data WHERE user_id IN(12,10,7,1) HAVING continent IN('Europe','America','Australia') AND NOT MATCH(weather) AGAINST('+"[blues]"' IN BOOLEAN MODE) || continent = 'Asia' AND MATCH(weather) AGAINST('+"[purples]"' IN BOOLEAN MODE) ORDER BY tb_id DESC LIMIT 7
合計行数は以上で5 million
ありuser_id
、インデックス付きの列tb_id
ですPRIMARY KEY
。EXPLAIN
の前で使用する場合SELECT
。MySQLは、合計500万から40万を超えるレコードを読み取ると言っています。
では、大陸の列にインデックスを付ける必要がありますか、それともこの場合は役に立ちませんか?
これがEXPLAINの結果です
id = 1; select_type = SIMPLE; table = data; possible_keys = user_id; key = user_id; ref = NULL; rows = 582; Extra = Using where, Using filesort