次のクエリは2つのテーブルで動作します:dev_Profile
とdev_User
。
SELECT
dev_Profile.ID AS pid,
Name AS username,
st1.online
FROM
dev_Profile
LEFT JOIN (
SELECT
dev_User.ID,
lastActivityTime /* DATETIME */
FROM
dev_User)
AS st1 ON st1.ID = dev_Profile.UserID;
各テーブルには約11K行があり、このクエリは完了するのに6秒近くかかります。私はまだデータベースの経験があまりありません。すでにインデックス(PK)があり、インデックスがないため、のインデックスを作成することでうまくいくと思いましたdev_Profile.UserID
が、これはまったく役に立ちませんでした。dev_Profile.ID
dev_Profile.UserID
編集:このクエリのEXPLAIN出力:
+----+-------------+-------------+------+---------------+------+---------+------+-------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+------+---------------+------+---------+------+-------+-------+
| 1 | PRIMARY | dev_Profile | ALL | NULL | NULL | NULL | NULL | 11521 | |
| 1 | PRIMARY | <derived2> | ALL | NULL | NULL | NULL | NULL | 11191 | |
| 2 | DERIVED | dev_User | ALL | NULL | NULL | NULL | NULL | 11440 | |
+----+-------------+-------------+------+---------------+------+---------+------+-------+-------+
助言がありますか?