SQLクエリがあります
SELECT level, data, string, soln, uid
FROM user_data
WHERE level = 10 AND (timetaken >= 151 AND timetaken <= 217) AND uid != 1
LIMIT 8852, 1;
150 万のエントリを持つテーブルから取得します。
を使用してインデックスを作成しました
alter table user_data add index a_idx (level, timetaken, uid);
したがって、私が直面している問題は、クエリに 30 秒以上かかる場合もあれば、0.01 秒未満の場合もあります。
ここでインデックス作成に問題はありますか。
編集:説明クエリの詳細を追加しました
+----+-------------+------------------+-------+---------------+------------+---------+------+-------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------------+-------+---------------+------------+---------+------+-------+--------------------------+
| 1 | SIMPLE | user_data | range | a_idx | a_idx | 30 | NULL | 24091 | Using where; Using index |
+----+-------------+------------------+-------+---------------+------------+---------+------+-------+--------------------------+
テーブルのデータ フィールドはテキスト フィールドです。ほとんどの場合、その長さは 255 文字を超えています。これにより問題が発生しますか?