Вы должны проиндексировать все поля, которые будут искать в ведущей таблице в предложении WHERE
и в ведомой таблице в предложениях WHERE
и JOIN
.
Создание индексов для покрытия все поля, использованные в запросе (включая пункты SELECT
и ORDER BY
), также помогут, так как поиск таблиц не потребуется.
Просто опубликуйте запрос здесь, и явероятно, сможет рассказать вам, как индексировать таблицы.
Обновление:
Ваш запрос вернет самое большее 1
строку с 1
в качестве COUNT(*)
Это выберет продажу с указанным StoreID
(который является PRIMARY KEY
), и присоединится к элементам на itemId
продажи и получит StoreName
(эта комбинация PRIMARY KEY
тоже).
Это соединение либо завершается успешно (возвращает 1
строку), либо завершается неудачно (не возвращает строки).
Если это удастся, COUNT(*)
будет 1
.
Если это действительно то, что вы хотите, то ваша таблица индексируется нормально.
Однако мне кажется, что ваш дизайн таблицынемного сложнее, и вы просто пропустили некоторые поля при копировании определений полей.
Обновление 2:
Создание составного индекса для sales (storeId, itemId)
Убедитесь, что вы PRIMARY KEY
на items
определены как (StoreName, ItemId)
(в таком порядке).
Если определено PK
как (ItemID, StoreName)
, создать индекс для items (StoreName, ItemID)
.