【问题标题】:MySQL JOIN Query Index optimizationMySQL JOIN 查询索引优化
【发布时间】:2014-11-02 08:39:30
【问题描述】:

我有这个问题。假设还没有创建索引,我如何使用索引来优化它以便查询运行得更快?如何创建索引?

select c.company_name, c.company_id FROM companies AS c 
JOIN users AS u USING(companyid) 
JOIN jobs AS j USING(userid) 
JOIN useraccounts AS ua USING(userid) 
WHERE j.jobid = 10;

任何帮助将不胜感激。

【问题讨论】:

    标签: mysql join indexing


    【解决方案1】:

    您应该对JOIN 子句中使用的所有列都有索引。您可以使用CREATE INDEXALTER TABLE 命令创建索引:

    CREATE INDEX u_companyid ON users (companyid);
    
    ALTER TABLE users ADD INDEX (companyid);
    

    请注意,表的主键已经编入索引,不需要显式添加索引。

    【讨论】:

    • 您的意思是我必须在 users.company_id、jobs.user_id 和 useraccounts.user_id 上添加索引吗?如果是,我是否缺少其他需要索引的列??
    • @MarkBonnieVestil 完全正确
    • @Barmar 谢谢人。索引 company.company_id 怎么样。是否有助于提高上述查询的性能?
    • 那不是主键吗?
    • 是的,我在回答的最后一行说过。主键已有索引。
    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多