2014-10-21 2 views
0

У меня есть простой запрос SELECT, который я запускаю в базе данных MySQL, с информацией, хранящейся в модуле хранения MyISAM. Однако, когда I INNER JOIN большой стол (~ 1.3mil строк, около 100 столбцов), запрос не выполняется, и я получаю зависание в phpMyAdmin.SELECT запрос с INNER JOIN crashing 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

Возможно, ваш запрос будет полезен из индексов. Попробуйте это:

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); 

Конечно, если ваш запрос тянет сотни тысяч или миллионы строк, которые могут быть причиной проблемы производительности. Если это так, индексы не будут большой помощью.

Смежные вопросы