Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
тормоза в ENUM (karson) 06/08/2005 - 06:46:07
      Re: тормоза в ENUM (Валентин) 09/08/2005 - 19:38:45
      Re: имхо, вы гоните (Dinky) 16/08/2005 - 23:07:21



From: karson - 06/08/2005 - 06:46:07
Subject:тормоза в ENUM
-----------------
Есть таблица account с таким полем (все не указываю. не имеет смысла):

status ENUM('unknown','success','fail','idle','useless')

Выборка идет именно по этому полю.
Кол-во записей > 10000.

Опыты показали, что извлечение 1 случайной записи при непосредственном указании значений status занимает порядка 0.3 сек. Это же кошмар.

Вот запрос:
SELECT id FROM account WHERE status='unknown' OR status='success' ORDER BY RAND() LIMIT 0,1;

Порылся в документации и наткнулся на функцию FIND_IN_SET().

Новый запрос:
SELECT id FROM account WHERE FIND_IN_SET('unknown',status)>0 OR FIND_IN_SET('success',
status)>0 ORDER BY RAND() LIMIT 0,1;

Ускорение оказалось существенным (-50%), но не убедительным.

Может ну его нахрен этот ENUM?
Тот же TINYINT в разы быстрее.
Но ведь хотелось сделать красиво, удобно, читабельно. А теперь будут шифры.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
23547



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |