простое индексированное соединение двух таблиц с возрастом - PullRequest
0 голосов
/ 03 августа 2011

Я пытаюсь сделать следующее:

select `table1`.`index2`
    from `table1`, `table2`
    where `table1`.`index1` = `table2`.`index1`
        and `table1`.`index2` != `table2`.`index2`

index1 и index2 являются varchar(255) и индексируются. обе таблицы содержат около 50 тыс. строк.
Этот запрос занял 10 минут, и я убил его, потому что он слишком длинный.
Почему это так долго?

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

Обнаружил проблему, не имеет ничего общего с запросом.
Похоже, что создание индекса как

index(`index1`, `index2`)

создает какой-то глупый индекс, но создает его как

index(`index1`),
index(`index2`)

исправил мои проблемы.что делает первый?

0 голосов
/ 03 августа 2011

Этот запрос имеет лучшую производительность? Использование левого внешнего соединения или внутреннего соединения иногда улучшает запрос.

select `table1`.`index2`
from `table1`
inner join table2 on `table1`.`index1` = `table2`.`index1`
    and `table1`.`index2` != `table2`.`index2`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...