Осталось присоединиться к нескольким колонкам производительности? - PullRequest
3 голосов
/ 27 сентября 2011

Предположим, что у меня есть 2 таблицы:

table1 :(20.000 records)
id    code1    code2   something    status

table2: (7.500 records)
id    code1    code2    name

Все, что я хочу, - перечислить все записи в таблице1 с именем в таблице2, используя этот запрос:

SELECT DISTINCT `tb1`.*, `tb2`.`name` FROM `table1` AS `tb1`
LEFT JOIN `table2` AS `tb2`
ON (tb1.code1 = tb2.code1 AND tb1.code2 = tb2.code2)
WHERE (tb1.status = 1)

Номне понадобилось слишком много времени, чтобы восстановить данные (через 5 минут я все еще не вижу результат).

Каков наилучший способ сделать это?

Заранее спасибо ..

1 Ответ

3 голосов
/ 27 сентября 2011

Пожалуйста, попробуйте добавить индекс для таблицы1, используя столбцы (код1, код2, статус).Если у вас не слишком много столбцов в table1, вы также можете добавить их в индекс.В MS SQL у нас есть «включить столбцы», которые мы можем добавить в индекс.Может быть, MySQL имеет что-то подобное.

Добавить индекс для таблицы2, используя столбцы (код1, код2, имя).

Если вас беспокоит размер индекса, просто сохраните (code1, code2, status) для index1 и (code1, code2) для index2.

Надеюсь, это поможет.

...