powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Правильный индекс
9 сообщений из 9, страница 1 из 1
Правильный индекс
    #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
Правильный индекс
    #39678991
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYing,

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

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

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


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