[Moscow.pm] Написал интерфейс к базе от ipgeobase.ru

Ruslan Zakirov ruslan.zakirov на gmail.com
Вт Дек 1 00:58:54 PST 2009


2009/12/1 Sergey Zhuravlev <sergey.zhuravlev на gmail.com>:
> 2009/12/1 Ruslan Zakirov <ruslan.zakirov на gmail.com>:

[snip]

>> Вот вы подумайте. Да, это range scan, но он ограничен с двух сторон.
>> Индекс отсортирован по возрастанию по обоим колонкам. По этому mysql
>> находит точку по istart и начинает сканирование вверх (к уменьшению) и
>> должна остановиться как только iend станет меньше нужного нам
>> значения. В итоге должно быть просмотрено записей максимум на две
>> больше чем реально будет возвращено.
>
> Недавно прочитал замечательную аналогую двухколоночного индекса.
> Есть адресная книга, контакты отсортированы сначала по фамилии, а
> потом по имени.
> Нам нужно выбрать тех, у кого фамилия меньше чем "Иванов" и имя больше
> чем "Сергей".
> Очевидно, что придётся просматривать последовательно всех, кто
> соответствует первому условию.

Безусловно. Это я тупил. Я как-то принял за данность, что мы знаем
когда остановить сканирование по первой части индекса.

>> Можете сравнить запросы совсем без сортировок?
>
> предложенный мной запрос без сортировки будет возвращать
> неправильные результаты, поэтому на него не стоит смотреть.

С limit в общем запрос неправильный, особенно если есть вложенные
блоки, что конечно не гуд, но в это БД они есть. Неправильный потому
что можно всегда получить больше по размеру блок. Возможно стоит их
вычищать как и прочий мусор после обновления БД.

-- 
Best regards, Ruslan.


Подробная информация о списке рассылки Moscow-pm