0

wp_users と opt_in の 2 つのテーブルからデータを取得しようとしています。

どちらのテーブルにも email 列 (それらの間で唯一の共通点) があり、wp_users ログイン名と残りの opt_in テーブル データがある次のような結果を取得しようとしています。

wp_users.user_login, email, opt_in.first_name, opt_in.last_name

私が書いたクエリは遅すぎます。各テーブルに約 10 万行あるため、クエリに制限を加えないと結果が得られません。仕事に適したツールを使用していないに違いありません。私のやり方の間違いを見せてください。

正しいデータを提供するクエリの例を次に示しますが、非常に遅いです。

SELECT wp_users.user_email, opt_in.first_name, opt_in.last_name 
FROM wp_users, opt_in 
WHERE wp_users.user_email = opt_in.email;
4

2 に答える 2

2

その列にインデックスを作成する必要があります。

電子メール フィールドの場合、UNIQUE インデックスを使用できます。重複したエントリを削除するのにも役立ちます。

テーブルの既存のインデックスを確認したい場合。phpmyadmin / mysql コンソールで以下のクエリを使用します

show indexes from TABLENAME;
于 2012-10-31T08:39:46.727 に答える
2

SELECT wp_users.user_email, opt_in.first_name, opt_in.last_name
FROM wp_users
INNER JOIN (opt_in)
ON (opt_in.email = wp_users.user_email)

于 2012-10-31T09:11:38.913 に答える