使用INNER JOIN的SELECT查询崩溃phpMyAdmin

时间:2014-10-21 10:08:10

标签: mysql phpmyadmin

我有一个简单的SELECT查询,我在MySQL数据库上运行,信息存储在MyISAM存储引擎中。但是,当我INNER JOIN一个大表(~1.3mil行,大约100列)时,查询无法执行,我在phpMyAdmin中得到一个挂起进程。

我有什么方法可以重新编写此查询以获取我需要的相关信息,这些信息使用的资源更少?

SELECT exhibitor_id, company_name FROM guidein
    INNER JOIN webmaster ON exhibitor_id = source_id 
    WHERE guidein.db_table = '$db_table' // i.e. 'PX14EX'
    ORDER BY company_name

exhibitor_id可以在guidein表中找到。

company_name可以在webmaster表中找到。

source_id也可以在webmaster表格中找到。

两个表中都找到了

db_table

1 个答案:

答案 0 :(得分:0)

您的查询可能会从索引中受益。试试这些:

create index idx_guidein_db_table_exhibitor_id on guidein(db_table, exhibitor_id);
create index idx_webmaster_source_id_company_name on webmaster(source_id, company_name);

当然,如果您的查询正在拉动数十万或数百万行,这可能是导致性能问题的原因。如果是这样,索引将不会有很大的帮助。