Я выполняю запрос в двух больших таблицах, но когда добавляю один столбец для сортировки (ps
. start_time
asc), мой запрос мертвый затор и занимает около 25 млн. Долл., Без этого столбца, занимает 1 сек. Я делюсь своим выражением sql:
SELECT
'ji'.'jobsId' AS 'jobsId',
'ji'.'fkCompanyId' AS 'fkCompanyId',
'ji'.'routeNumber' AS 'routeNumber',
'ji'.'fromStop' AS 'fromStop',
'ji'.'toStop' AS 'toStop',
'ji'.'schDeptTime' AS 'schDeptTime',
'ji'.'schArrTime' AS 'schArrTime',
'ji'.'run' AS 'run',
'ji'.'scheduleCode' AS 'scheduleCode',
'ji'.'driverDeptTime' AS 'driverDeptTime',
'ji'.'driverArrTime' AS 'driverArrTime',
'ji'.'serviceType' AS 'serviceType',
'ji'.'days' AS 'days',
'ji'.'busNumber' AS 'busNumber',
'ji'.'hrNumber' AS 'hrNumber',
'ji'.'DriverName' AS 'DriverName',
'ps'.'start_time' AS 'start_time',
'ps'.'start_location' AS 'start_location',
'ps'.'start_areas' AS 'start_areas',
'ps'.'passenger_scan' AS 'passenger_scan',
'ji'.'fkCityId' AS 'fkCityId',
'ji'.'City' AS 'City',
'ji'.'date' AS 'date'
FROM ('passenger_scan' 'ps'
JOIN 'jobs_import' 'ji' USE INDEX(jobs_date)
ON (('ji'.'busNumber' = 'ps'.'busInfo')))
WHERE DATE BETWEEN '2018-d03-01' AND '2018-03-31'
ORDER BY ji.'date' DESC, ji.'City' ASC , ji.'routeNumber' ASC -- ,'ps'.'start_time' asc
План выполнения без нужной колонки сортировки
План выполнения с нужной колонкой сортировки (ее проблема)
Индексы по обеим таблицам (все столбцы, индексированные в порядке по условию)
Ваши поля соединения должны быть проиндексированы в порядке оптимизации. Пожалуйста, проверьте, нет ли ps
. start_time
индексируется