MySQL Query Plan отличается в PHP по сравнению с Query Plan, созданным через Navicat

Я довольно смущен во время публикации этого.
Я не понимаю, почему план запроса для запроса отличается, когда я запускаю EXPLAIN в php против запуска EXPLAIN для EXACT того же запроса в navicat.

Запрос:

SELECT
MAX(`SaleID`) AS 'LatestSaleID',
MAX(`SaleDate`) AS 'MyLastVisit',
COUNT(SaleID) AS 'MyNumVisits'
FROM sales_table
WHERE sales_table.CustomerID = '5207'

Объясните вывод в Navicat:

  • id — 1
  • select_type — SIMPLE
  • таблица — sales_table
  • перегородки — NULL
  • тип — ссылка
  • Возможные_клиенты — CustomerID
  • ключ — CustomerID
  • key_len — 22
  • ref — const
  • ряды — 1
  • отфильтрованный — 100
  • Extra — NULL

Объясните вывод при запуске из PHP:

  • id — 1
  • select_type — SIMPLE
  • таблица — sales_table
  • перегородки — NULL
  • тип — ВСЕ
  • Возможные_клиенты — CustomerID
  • ключ — NULL
  • key_len — NULL
  • ref — NULL
  • строки — 1772719
  • отфильтрованный — 10,00
  • Extra — Использование где

Как видите, вывод объяснения сильно отличается. Из-за этой разницы запрос выполняется в 4 раза дольше с моей страницы PHP.

Я пытался использовать принудительный индекс. Однако это тоже не сработало.

SELECT
MAX(`SaleID`) AS 'LatestSaleID',
MAX(`SaleDate`) AS 'MyLastVisit',
COUNT(SaleID) AS 'MyNumVisits'
FROM sales_table USE INDEX(CustomerID)
WHERE sales_table.CustomerID = '5207'

Я нашел соответствующий пост — PHP выполняет запрос в 90 раз дольше, чем клиент MySQL. Однако мне не удалось найти какую-либо информацию относительно различий в плане запросов.

Это устаревшее приложение, которое все еще использует mysql_query.

  • Версия PHP — 5.6.34-1 + ubuntu16.04.1 + deb.sury.org + 1
  • Версия MySQL — mysqlnd 5.0.11-dev — 20120503

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]