Оптимизировать LEFT JOINS ORDER BY на нескольких столбцах varchar

0

Я попытался оптимизировать MySQL-запрос, который сортирует несколько столбцов varchar:

SELECT *
FROM tickets
LEFT OUTER JOIN customers ON customers.id = tickets.customer_id
LEFT OUTER JOIN locations ON locations.id = tickets.location_id
ORDER BY customers.name, locations.name;

Заявление ORDER BY, по-видимому, занимает много времени (~ 100 мс) для небольшой базы данных ~ 6000 билетов, ~ 40 клиентов и ~ 400 местоположений.

Я уже уменьшил длину столбцов varchar, что значительно ускорило запрос (в 2 раза быстрее).

Есть ли у вас какие-либо решения для оптимизации времени выполнения запроса?

Большое спасибо!

  • 1
    У вас есть индексы на customer.name и location.name? Если нет, добавьте их и проверьте, как это ускорит ваш запрос
Теги:
performance
left-join
sql-order-by

1 ответ

2

У вас должны быть индексы в столбцах customers.name и locations.name.

Кроме того, убедитесь, что customers.id, tickets.customer_id, locations.id и tickets.location_id индексируются.

  • 0
    Идентификаторы индексируются, и время выполнения остается тем же после «CREATE INDEX name ON users (name)» и «CREATE INDEX name ON location (name)». Странный?
  • 0
    «ORDER BY Customers.name, location.name» не в той же таблице, не следует избегать сортировки файлов и временной таблицы, не так ли?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню