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




MySQL.RU - Webboard



Вернуться
странная реакция LIKE на индекс (dxfan) 04/04/2003 - 00:14:56
      Re: странная реакция LIKE на индекс (Sergey V. Sokolov) 04/04/2003 - 13:17:34
      Re: странная реакция LIKE на индекс (Валентин) 04/04/2003 - 14:01:25
      Re: странная реакция LIKE на индекс (dxfan) 04/04/2003 - 15:28:18
      Re: странная реакция LIKE на индекс (Sergey V. Sokolov) 04/04/2003 - 20:51:53
      Re: странная реакция LIKE на индекс (Dinky) 04/04/2003 - 23:37:04
      Re: странная реакция LIKE на индекс (dxfan) 05/04/2003 - 09:57:42
      Re: странная реакция LIKE на индексSergey V. Soko (Валентин) 05/04/2003 - 10:44:07
      Re: 2 dxfan (walrus) 05/04/2003 - 21:02:58
      Re: 2 walrus (dxfan) 07/04/2003 - 16:35:18
      Re: 2 walrus (walrus) 08/04/2003 - 18:44:11
      Re: странная реакция LIKE на индекс (Schura55) 13/02/2009 - 14:14:56
      Re: странная реакция LIKE на индекс (Schura55) 13/02/2009 - 14:20:32

> Original message text:
> From: dxfan - 04/04/2003 - 00:14:56
> Subject:странная реакция LIKE на индекс
> -----------------
> Имеем Win2000Pro + MySQL 3.23.52 идет пресадка локальной базы на клиент-сервер, решил "потрогать" MySQL.
> Пока сервер и клиент на одной машине.
>
> Есть таблица 3млн. записей (данные по телефонным разговорам)
> без индексов выполняю запрос:
> select * from `telcalls` where numberB like '80172%'
> в результате ~55000 записей, время выполнения запроса: 11 сек.
> Делаем индекс по NumberB, тот же запрос - но время выполнения ~5 мин.
>
> Как понять ???
>
> Не дайте разочароваться в MySQL.
> ЗЫ: если не сложно копию ответа на мыло, спасибо !
>


From: Sergey V. Sokolov - 04/04/2003 - 13:17:34
Subject:странная реакция LIKE на индекс
-----------------
Ну ты дал:-) Такой запрос на любой базе тормозить будет. Причем на MS SQL возможно еще больше. 3000000 записей это тебе не шутка. Я тестировал MySQL 3.23.x на запросы с объединением (внешним и внутренним), без индексов получилось гораздо быстрее чем у тебя. В обоих таблицах было по 500000 записей. Заметь с объединением! С индексом десятые доли сек.

В твоем случае советую:
1. numberB - BIGINT PRIMARY KEY должен быть, а не простым индексом, а ты возможно еще к нему добавил простой INDEX.
2. ИМХО LIKE строковая функция, по этому требуется дополнительное время на преобразование из BIGINT в TEXT
3. Реально тебе все записи сразу не нужны, по этому используй LIMIT.
4. Выбирай только нужные поля
5. Итог:
SELECT tbl.field1, tbl.field2, ...tbl.fieldN
FROM tbl WHERE numberB >= 80172 and numberB <= 8017299999
LIMIT 100;

Надеюсь смысл ясен. Удачного запроса:-)


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

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

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



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