Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Правильный индекс / 9 сообщений из 9, страница 1 из 1
25.07.2018, 15:00
    #39678978
LiYing
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный индекс
Подскажите, пожалуйста. Имеется простая табличка:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE `data` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `deleted` tinyint(1) NOT NULL DEFAULT '0',
  `npl` int(11) NOT NULL,
  `date_put` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `i_del` (`deleted`),
  KEY `i_npl` (`npl`),
  KEY `i_dat` (`date_put`),
  KEY `i_dd` (`deleted`,`date_put`) USING BTREE
) ENGINE=InnoDB;


Нужно выбрать макс.значение npl из неудаленной записи (NOT deleted) за заданный период времени, делаю так:
Код: sql
1.
SELECT MAX(npl) FROM data WHERE NOT deleted AND (date_put BETWEEN '2018-01-01 00:00:00' AND '2018-07-29 06:54:00') 


Результат EXPLAIN:

Видно, что производится полный просмотр этой таблицы (7 записей всего). Какой нужно составить индекс, чтобы этого избежать? Или как изменить запрос, если это возможно?
Таблица будет содержать сотни тысяч записей с периодически повторяющимся npl.
...
Рейтинг: 0 / 0
25.07.2018, 15:09
    #39678991
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный индекс
LiYing,

данных в табличку надо записать побольше. 7 строк сильно дешевле пройти seqscan'ом, чем по индексу прыгать.
...
Рейтинг: 0 / 0
25.07.2018, 15:14
    #39678999
LiYing
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный индекс
Melkij,
упс, это я не учел. А какой индекс будет использоваться при наличии большого кол-ва записей? Нужен ли `i_dd`?
...
Рейтинг: 0 / 0
25.07.2018, 15:31
    #39679013
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный индекс
какой процент планируется неудаленных записей от всех сотен тыс?
...
Рейтинг: 0 / 0
25.07.2018, 15:45
    #39679034
LiYing
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный индекс
Дегтярев Евгений,

минимальный, врядли более 1%.
...
Рейтинг: 0 / 0
25.07.2018, 15:49
    #39679037
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный индекс
Тогда существующего индекса KEY `i_del` (`deleted`) достаточно. Если же и по дате сравнимый процент - ещё удачнее будет индекс KEY `i_del_dat` (`deleted`,`date_put`)
...
Рейтинг: 0 / 0
25.07.2018, 15:59
    #39679057
LiYing
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный индекс
Спасибо всем за помощь!
...
Рейтинг: 0 / 0
25.07.2018, 17:06
    #39679144
machetero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный индекс
KEY - это нововведение восьмой версии ?
...
Рейтинг: 0 / 0
25.07.2018, 17:25
    #39679165
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный индекс
machetero,

нет, в 5.х точно был , скорей всего был уже очень давно, алиас для index
манThis was implemented for compatibility with other database systems.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Правильный индекс / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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