我有一个简单的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
。
答案 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);
当然,如果您的查询正在拉动数十万或数百万行,这可能是导致性能问题的原因。如果是这样,索引将不会有很大的帮助。