|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
35005
|
|