Mysql Query Optimization - PullRequest
       7

Mysql Query Optimization

0 голосов
/ 06 января 2011

У меня есть две таблицы: в таблице 1 есть записи по 4 лака (400 000), а в других 100 записей.

Я пытаюсь выполнить следующий запрос:

SELECT DISTINCT t1.id as id 
FROM table1 t1 
JOIN table2 t2 ON t2.f_id = t1.id 
              AND  t1.action = 0;

Я использую MYISAM Engine. t1.id и t2.f_id одинаковы и проиндексированы.

этот запрос занимает 30 секунд. Есть ли способ сделать это быстрее.

Ответы [ 3 ]

4 голосов
/ 06 января 2011

Убедитесь, что у вас есть индекс для table1.id, table1.action и table2.f_id, и если предположить, что никакие другие индексы не работают ни в одной из таблиц, вызывающих проблемы с производительностью, это должно быть ближе к оптимальному:

SELECT
     DISTINCT t1.id AS id
FROM
     table1 AS t1
     JOIN table2 AS t2 ON t2.f_id = t1.id
WHERE
     t1.action = 0
0 голосов
/ 06 января 2011

Первым шагом будет добавление индекса на table1, который охватывает id и action вместе.

Ввод distinct в запрос также замедлит его.

0 голосов
/ 06 января 2011

Установите один индекс на t1.action,t1.id, а другой на t2.f_id.

...