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




MySQL.RU - Webboard



Вернуться
Индексы и BETWEEN - непонятный баг (G_M_S) 03/04/2012 - 16:30:14
      Re: Индексы и BETWEEN - непонятный баг (Akina) 04/04/2012 - 10:50:53
      Re: Да, кстати... (Akina) 04/04/2012 - 11:06:52

> Original message text:
> From: G_M_S - 03/04/2012 - 16:30:14
> Subject:Индексы и BETWEEN - непонятный баг
> -----------------
> Доброго времени суток!
>
> Возникла проблема такого рода: есть табличка для хранения геотегов к файлам (для отображения на карте гуглмапс). В ней имеются 2 поля: lat и lng типа DOUBLE, содержащие широту и долготу в градусах (для тех, кто не сталкивался - циферки от -180 до 180 с точностью до 3-х знаков). Заполняю ее тестовым набором записей чуть более полумиллиона штук (527 тыс, если быть совсем точным). Движок - InnoDB. Делаю выборку запросом:
>
> select * from files_geotags where (lat between -40 and -38) and (lon between 28 and 30);
>
> Получаю время выполнения ~5 секунд. Вешаю составной индекс на оба поля, повторяю выборку - получаю время выполнения ~26 секунд о_0 Это что за фокусы такие? Я раньше с орацлом и интербейзом работал и НИ РАЗУ не видел, что б индекс на числовом поле УВЕЛИЧИВАЛ время выборки! Проверил эксплайном - индекс используется! Без индекса перебирает все 527 тыс записей, с индексом (range) перебирает всего 29 тыс. В чем может быть проблема?
>
> Пробовал создать два дополнительных поля типа INT и пихнуть в них координаты, умноженные на 1000 (что б не терять дробную часть - зачастую координаты углов карты отличаются менее чем на 1 градус) - результат вышел даже хуже: без индекса запрос выполняется 7 секунд, с индексом - около 30.
>
> Подскажите пожалуйста, как побороть этот баг? Почему запрос С ИНДЕКСОМ выполняется ДОЛЬШЕ, чем без него? В чем проблема?
>


From: Akina - 04/04/2012 - 11:06:52
Subject:Да, кстати...
-----------------
Если таблица - не на MyISAM, а на другом движке, кардинально ситуацию улучшить в принципе не удастся.


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

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

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



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