Я пытаюсь сделать следующее:
select `table1`.`index2` from `table1`, `table2` where `table1`.`index1` = `table2`.`index1` and `table1`.`index2` != `table2`.`index2`
index1 и index2 являются varchar(255) и индексируются. обе таблицы содержат около 50 тыс. строк. Этот запрос занял 10 минут, и я убил его, потому что он слишком длинный. Почему это так долго?
index1
index2
varchar(255)
Обнаружил проблему, не имеет ничего общего с запросом. Похоже, что создание индекса как
index(`index1`, `index2`)
создает какой-то глупый индекс, но создает его как
index(`index1`), index(`index2`)
исправил мои проблемы.что делает первый?
Этот запрос имеет лучшую производительность? Использование левого внешнего соединения или внутреннего соединения иногда улучшает запрос.
select `table1`.`index2` from `table1` inner join table2 on `table1`.`index1` = `table2`.`index1` and `table1`.`index2` != `table2`.`index2`