"Ded" ...

>     Честно говоря, я тоже не особо въехал. И чем between хуже просто
> больше или просто меньше в этом плане.

    Ок. Ещё раз :)

    Когда у нас равенство, то среднее кол-во записей, ему удовлетворяющих
(кардинальность выборки), как раз равно величине, обратной селективности.
Это при условии равномерного распределения значений ключей. Т.к. ключи
распределяются равномерно только в простейших мат.моделях (или если их
1 штука :), то вводят укрупнённую статистику - гистограммы - которые
позволяют оценить кардинальность выборки более точно. Естественно, если
мы заранее знаем, что мы ищем в индексе.

    Теперь смотрим на больше или меньше. Если ключи распределены равномерно
и мы не знаем, что мы будем искать (или у нас нет гистограмм), то в среднем мы
будем перебирать ровно половину всех ключей. Отсюда оценка 0.5. Она, 
естественно,
никак не может зависеть от селективности. Если искомое значение известно заранее
и у нас есть гистограммы, то мы можем знать более точную оценку.

    Теперь between. Это, на самом деле, комбинация больше И меньше. Имеющие
минимальное понятие о теорвере скажут, что в этом случае нам в среднем придётся
перебрать четверть ключей, т.е. оценка должна быть 0.25. В FB2 приняли 0.2.
Опять же совершенно очевидно, что тупая селективность индекса на эту оценку
никак не влияет. Знание границ и наличие гистограмм даст нам более точную 
оценку.

> Но склонен этим пацанам доверять :)
> во всяком случае пока на практике не столкнусь с обратным и не смогу
> чётко обозначить проблему, характерную для типовых задач. Оне меня
> столько раз рылом по клавишам возили :-D

    Не я :)

> > PPS: Конечно получу по морде, но ... !!!!
> >      Доводов приведенных в этой ветке "ЗА" достаточно, имхо ...
>
>     Когда доводы будут зафиксированы на практике и будет ясно в чём
> логическая ошибка применительно к типовым прикладным областям хотя бы у
> нескольких человек, да что я, достаточно чтоб у МЕНЯ :-D я тоже начну
> громко материться. Однако, имхо если так получится, ребята и сами
> сделают выводы и найдут компромисс.

    В случае с параметрами, неизвестными в момент prepare, я лично вижу только
два варианта компромисса:

а) кривущий, имхо, - накапливать в рантайме статистику выполнения таких запросов
    и делать оценки с её участием. Сразу скажу - я не знаю что и как тут нужно 
накапливать

б) выбирать использовать индекс или нет в рантайме (при наличии гистограмм), 
т.е.
    делать "вилку" в плане выполнения. Тоже бредово, т.к. это не влияет на 
порядок
    соединения таблиц, который может быть очень неоптимальным

--
Хорсун Влад



--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---

Ответить