"Ded" ...
> Честно говоря, я тоже не особо въехал. И чем between хуже просто
> больше или просто меньше в этом плане.
Ок. Ещё раз :)
Когда у нас равенство, то среднее кол-во записей, ему удовлетворяющих
(кардинальность выборки), как раз равно величине, обратной селективности.
Это при условии равномерного распределения значений ключей. Т.к. ключи
распределяются равномерно только в простейших мат.моделях (или если их
1 штука :), то вводят укрупнённую статистику - гистограммы - которые
позволяют оценить кардинальность выборки более точно. Естественно, если
мы заранее знаем, что мы ищем в индексе.
Теперь смотрим на больше или меньше. Если ключи распределены равномерно
и мы не знаем, что мы будем искать (или у нас нет гистограмм), то в среднем мы
будем перебирать ровно половину всех ключей. Отсюда оценка 0.5. Она,
естественно,
никак не может зависеть от селективности. Если искомое значение известно заранее
и у нас есть гистограммы, то мы можем знать более точную оценку.
Теперь between. Это, на самом деле, комбинация больше И меньше. Имеющие
минимальное понятие о теорвере скажут, что в этом случае нам в среднем придётся
перебрать четверть ключей, т.е. оценка должна быть 0.25. В FB2 приняли 0.2.
Опять же совершенно очевидно, что тупая селективность индекса на эту оценку
никак не влияет. Знание границ и наличие гистограмм даст нам более точную
оценку.
> Но склонен этим пацанам доверять :)
> во всяком случае пока на практике не столкнусь с обратным и не смогу
> чётко обозначить проблему, характерную для типовых задач. Оне меня
> столько раз рылом по клавишам возили :-D
Не я :)
> > PPS: Конечно получу по морде, но ... !!!!
> > Доводов приведенных в этой ветке "ЗА" достаточно, имхо ...
>
> Когда доводы будут зафиксированы на практике и будет ясно в чём
> логическая ошибка применительно к типовым прикладным областям хотя бы у
> нескольких человек, да что я, достаточно чтоб у МЕНЯ :-D я тоже начну
> громко материться. Однако, имхо если так получится, ребята и сами
> сделают выводы и найдут компромисс.
В случае с параметрами, неизвестными в момент prepare, я лично вижу только
два варианта компромисса:
а) кривущий, имхо, - накапливать в рантайме статистику выполнения таких запросов
и делать оценки с её участием. Сразу скажу - я не знаю что и как тут нужно
накапливать
б) выбирать использовать индекс или нет в рантайме (при наличии гистограмм),
т.е.
делать "вилку" в плане выполнения. Тоже бредово, т.к. это не влияет на
порядок
соединения таблиц, который может быть очень неоптимальным
--
Хорсун Влад
--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---