Используйте индекс в ORDER BY с двумя столбцами из разных таблиц - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть этот запрос:

SELECT ...
FROM property as p FORCE INDEX (property_order)
INNER JOIN property_attribute as pa ON pa.property_attribute_property_id = p.property_id
WHERE ...
ORDER BY p.property_featured DESC, p.property_ranking_date DESC

Этот запрос работает хорошо, но если я добавлю поле из property_attribute в ORDER BY, производительность станет ужасной, даже с использованием сортировки файлов.

Изменение:

ORDER BY 
  p.property_featured DESC, 
  pa.property_attribute_minimum_photo_1, 
  p.property_ranking_date DESC

На самом деле все очень странно. Если я удаляю FORCE INDEX из запроса, я получаю это в первой строке моего объяснения:

1   SIMPLE  agent   ref PRIMARY,agent_published,agent_id    agent_published 1   const   1   Using temporary; Using filesort

Хорошо, в s a problem in my 'agent' table? So, when I remove the all ORDER BY, the filesort disappears. There нет поля в таблице операторов в ORDER BY ...

Мои вопросы:

  1. Должен ли я добавить индекс в таблицу property_attribute, развивающую поле 'pa.property_attribute_minimum_photo_1'?

    • Если да, добавив туда индекс, я должен использовать индекс в предложении INNER JOIN?

    • Если нет, куда мне добавить индекс?

  2. Есть ли способ объединить в одном индексе столбцы из разных таблиц?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...