我正在尝试从两个表中获取数据,它们是wp_users和opt_in。
这些表都有一个电子邮件列(它们之间唯一的共同点),我正在尝试获得看起来像这样的结果,其中我有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;
答案 0 :(得分:2)
您应该create index在该列上。
对于电子邮件字段,您可以使用UNIQUE索引,它还可以帮助您删除重复的条目。
如果您想检查表上的现有索引。在phpmyadmin / mysql控制台中使用以下查询
show indexes from TABLENAME;
答案 1 :(得分:2)
SELECT wp_users.user_email,opt_in.first_name,opt_in.last_name
来自wp_users
INNER JOIN(opt_in)
ON(opt_in.email = wp_users.user_email)
使用EXPLAIN来了解正在发生的事情
如上所述,索引在提高查询执行速度方面发挥了重要作用
很少有其他链接解释为什么任何人应该使用JOIN而不是多个选择