Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Почему ORDER по ID работает дольше чем по Date / 11 сообщений из 11, страница 1 из 1
24.09.2013, 08:59:50
    #38405501
lehos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
Почему так.
Один и тот же запрос если в Order поставить id, который является INT, Primary Key, то запрос выполняется
/* Affected rows: 0 Найденные строки: 2,000 Предупреждения: 0 Длительность 1 query: 3.884 sec. (+ 0.967 sec. network) */

если в Order поставить поле с датой, не индексированное, то выполняется
/* Affected rows: 0 Найденные строки: 2,000 Предупреждения: 0 Длительность 1 query: 1.217 sec. (+ 0.203 sec. network) */

Почему?
Как сделать так, чтобы по id сортировалось быстрее?
...
Рейтинг: 0 / 0
24.09.2013, 09:43:30
    #38405547
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
Мало данных для осмысленного ответа.
DDL, текст и explain запроса в студию.
...
Рейтинг: 0 / 0
24.09.2013, 10:22:20
    #38405589
lehos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
Akina,

Вот EXPLAIN

По id
1, SIMPLE, request, index, \N, PRIMARY, 4, \N, 2000, Using where
1, SIMPLE, users, eq_ref, PRIMARY, PRIMARY, 4, techwork.request.ID_eng1, 1,
1, SIMPLE, RP, eq_ref, PRIMARY,req_id, PRIMARY, 4, techwork.request.ID_req, 1,

По дате
1, SIMPLE, request, ALL, \N, \N, \N, \N, 506997, Using where; Using filesort
1, SIMPLE, users, eq_ref, PRIMARY, PRIMARY, 4, techwork.request.ID_eng1, 1,
1, SIMPLE, RP, eq_ref, PRIMARY,req_id, PRIMARY, 4, techwork.request.ID_req, 1,
...
Рейтинг: 0 / 0
24.09.2013, 10:26:34
    #38405596
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
Теперь ещё DDL и текст запроса.
И ещё раз explain.
И всё это - в теге SQL-кода.
...
Рейтинг: 0 / 0
24.09.2013, 10:56:35
    #38405640
lehos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
Собственно вот
Таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE `request` (
	`id_req` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`req_date` DATETIME NULL DEFAULT NULL,
        `plan` ENUM('y','n') NULL DEFAULT 'n',
	`done` ENUM('y','n') NULL DEFAULT 'n',
        `box_connect` TINYINT(1) NOT NULL DEFAULT '0',
        `deleted` TINYINT(1) NOT NULL DEFAULT '0',
	PRIMARY KEY (`ID_req`),
)
COLLATE='cp1251_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=2265322;



Запрос с сортировкой по id
Код: sql
1.
2.
3.
4.
5.
6.
SELECT * FROM request 
WHERE done='n' 
	AND plan='y' 
	AND deleted = 0 
	AND box_connect=0 
ORDER BY id_req LIMIT 0, 2000


его EXPLAIN
1SIMPLErequestindex\NPRIMARY4\N2000Using where

Запрос с сортировкой по дате
Код: sql
1.
2.
3.
4.
5.
6.
SELECT * FROM request 
WHERE done='n' 
	AND plan='y' 
	AND deleted = 0 
	AND box_connect=0 
ORDER BY req_date LIMIT 0, 2000


его EXPLAIN
1SIMPLErequestALL\N\N\N\N507028Using where; Using filesort
...
Рейтинг: 0 / 0
24.09.2013, 11:00:12
    #38405644
lehos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
Если из условия убрать
Код: sql
1.
2.
AND deleted = 0 
AND box_connect=0 


скорость выполнения запроса на порядок...

Почему булевые значения дольше ищутся чем enum?
Как ускорить поиск по булевым значениям?
Как это связанно с id?
...
Рейтинг: 0 / 0
24.09.2013, 11:23:36
    #38405680
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
Неплохо бы создать необходимые для этих запросов индексы.
Ещё разумнее - собрать все отборные поля в одно поле маски.
...
Рейтинг: 0 / 0
24.09.2013, 11:24:52
    #38405682
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
F разница в планах определяется не запросами или структурой, а статистикой таблицы (хранимым в ней массивом данных).
...
Рейтинг: 0 / 0
24.09.2013, 12:03:21
    #38405758
lehos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
Akina,

В маску собрать не получиться, слишком большая обвязка.
А вот с индексами надо подумать.
Поставил индекс на `deleted` эффекта ноль...
...
Рейтинг: 0 / 0
24.09.2013, 12:06:25
    #38405766
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
lehosВ маску собрать не получиться, слишком большая обвязка.Не понял фразы.
lehosПоставил индекс на `deleted` эффекта ноль...А то, что индекс может включать несколько полей - не в курсе, что ли?
...
Рейтинг: 0 / 0
24.09.2013, 12:17:06
    #38405797
lehos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему ORDER по ID работает дольше чем по Date
lehos,

ну обвязка, ПО использующее БД, поменять во всех запросах крайне геморройно, учитывая что система старая и ПО разное

в курсе, собственно что и сделал
всё заработало в разы быстрее

да и после добавления индекса, видимо кэш обновился и сортировка перестала влиять на скорость выполнения запроса
то что и ввело меня в заблуждение изначально.

Спасибо большое за помощь.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Почему ORDER по ID работает дольше чем по Date / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]