SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.11.2011 22:30:37

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

имеют ли смысл индексы на MEMORY-таблицах

Ускорят ли запросы с WHERE/ORDER BY/JOIN по проиндексированным колонкам?

Неактивен

 

#2 01.11.2011 22:47:36

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: имеют ли смысл индексы на MEMORY-таблицах

Насколько я знаю да.
Естественно есть примая связь с размером таблицы.
Ещё в Memory tables может быть полезным быстрый индекс HASH INDEX

Неактивен

 

#3 01.11.2011 22:52:41

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: имеют ли смысл индексы на MEMORY-таблицах

Ну да, если исходить из известных материалов, то рекомендуется использовать hash-индексы, но это только на прямое равенство. В случае >= или <= придется создавать btree-индекс (при этом явно это прописав в создании индекса) и помнить про его больший объем, нежели у hash-индекса.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 02.11.2011 02:38:11

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: имеют ли смысл индексы на MEMORY-таблицах

На самом деле надо смотреть в конкретной ситуации. Если много записей, то безусловно индекс ускорит выполнение запроса, но количественная граница сильно смещена, относительно обычных таблиц. Сейчас посмотрел одну MEMORY-таблицу, которую активно использовал и думал, что на ней есть индексы. Оказалось, что индексов нет и я ничего не заметил при 28 миллионах записей.

Неактивен

 

#5 02.11.2011 11:23:00

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: имеют ли смысл индексы на MEMORY-таблицах

rgbeast написал:

На самом деле надо смотреть в конкретной ситуации. Если много записей, то безусловно индекс ускорит выполнение запроса, но количественная граница сильно смещена, относительно обычных таблиц. Сейчас посмотрел одну MEMORY-таблицу, которую активно использовал и думал, что на ней есть индексы. Оказалось, что индексов нет и я ничего не заметил при 28 миллионах записей.

fullscan по 28 миллионам записей ? Это работает быстро ? :-)
Вообще интересно провести эксперимент с сравнением на конкретных примерах. Возможно что разница действительно не будет значительной.

Неактивен

 

#6 02.11.2011 11:46:36

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: имеют ли смысл индексы на MEMORY-таблицах

evgeny написал:

fullscan по 28 миллионам записей ? Это работает быстро ? :-)
Вообще интересно провести эксперимент с сравнением на конкретных примерах. Возможно что разница действительно не будет значительной.

Примерно 2 секунды, что меня устраивает для конкретной задачи. Это на порядок быстрее, чем MyISAM с индексами (требуемый запрос в любом случае делает скан части таблицы, но индексы ему помогают). Вспомнил, что индекс не использовал для экономии памяти - сама возможность поместить данные в память важнее, чем индекс.

Неактивен

 

#7 02.11.2011 20:30:40

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: имеют ли смысл индексы на MEMORY-таблицах

я ничего не заметил при 28 миллионах записей

Хм..
Этот факт практически равносилен ответу "нет" на вопрос о значимости индексов для MEMORY-таблиц.
Если граница смещена так сильно, то почти не будет случаев, когда верно обратное: 28 миллионов записей в памяти - это уже масштабы in-memory noSQL-хранилищ типа Redis или Tarantool (это я к тому, что там узкими местами другие вещи становятся обычно; хотя опять же зависит от конкретной задачи).

Неактивен

 

#8 02.11.2011 20:34:07

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: имеют ли смысл индексы на MEMORY-таблицах

LazY написал:

Этот факт практически равносилен ответу "нет" на вопрос о значимости индексов для MEMORY-таблиц.
Если граница смещена так сильно, то почти не будет случаев, когда верно обратное: 28 миллионов записей в памяти - это уже масштабы in-memory noSQL-хранилищ типа Redis или Tarantool (это я к тому, что там узкими местами другие вещи становятся обычно; хотя опять же зависит от конкретной задачи).

Не совсем так. Все же у меня был запрос изначально медленный (он использовал хранимую функцию в части where) и 2 секунды для него казалось мгновенным. Если запрос прямо по индексу, то, очевидно, индекс поможет и граница не так далеко.

Неактивен

 

#9 14.11.2011 16:20:07

Александр Трофимов
Завсегдатай
Откуда: Юрмала
Зарегистрирован: 19.09.2011
Сообщений: 95

Re: имеют ли смысл индексы на MEMORY-таблицах

У меня во многих случаях разница ощутимая. А иногда бывает с индексами медленнее, чем без.
Для меня очень важны индексы (именно BTREE) там, где постоянно надо связывать несколько таблиц Memory.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson