実行に時間がかかる場合があるクエリがあります。遅さは無関係かもしれませんが、これをより効率的にするために何ができるかを確認したかったのです。
user テーブルには約 40,000 行あります。コード テーブルには約 30,000 行あります。user_id と code は一意の値です。
SELECT *
FROM `user`, code
WHERE `user`.user_id = code.user_id
AND code.code = '50816ef96210415d1cad824bdb43';
code.user_id フィールドにインデックスを設定しました。他にできることはありますか?ここに他のインデックスを配置する必要がありますか?
そのクエリの EXPLAIN からの出力:
>> +----+-------------+-------+--------+---------------+---------+---------+----------------------+-------+-------------+
>> | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
>> +----+-------------+-------+--------+---------------+---------+---------+----------------------+-------+-------------+
>> | 1 | SIMPLE | code | ALL | user_id | NULL | NULL | NULL 35696 | Using where |
>> | 1 | SIMPLE | user | eq_ref | PRIMARY | PRIMARY | 4 | mydb.code.user_id | 1 | |
>> +----+-------------+-------+--------+---------------+---------+---------+----------------------+-------+-------------+
>> 2 rows in set (10.11 sec)