Hello, Константин! Константин wrote:
> Может я опять чегой-то недопонимаю но нафига всё таки тогда > "индексы\селективность\отношение уникальных значений\что-то ещё" > если их не использовать в выборе плана ? забодал, чесслово. Селективность используется, разумеется. Но по селективности невозможно понять ПЕРЕКОС в значениях. Например, селективность X предполагает, что существует N групп по 10000 значений. А на деле оказывается что ОДНО значение записно в ПОЛОВИНЕ всех записей таблицы. Тут именно об этом случае и говорят. Кроме того, СЕЛЕКТИВНОСТЬ можно использовать например если у тебя ДВА BETWEEN, или СРАВНЕНИЯ на >, < =. То есть, какой ИЗ ДВУХ индексов лучше. Если же идет поиск на >, как тебе вообще ПОМОЖЕТ СЕЛЕКТИВНОСТЬ? > И откуда вобще появилась идея фиксированных "констант 0.5; 0.2" ? ВОТ ДЛЯ ЭТОГО, то есть для определения разницы между >, <, = и between и введены константы. Ты можешь залудить поиск на > как по БОЛЬШЕЙ части индекса, так и ПО МЕНЬШЕЙ, но все равно по селективности эту большесть-меньшесть определить НЕЛЬЗЯ. Поэтому на основе РЕАЛЬНЫХ ситуаций выбран коэффициент 0.5. То же самое в отношении BETWEEN - как правило, в среднем, between выбирает где-то четверть записей, хотя ты можешь выбрать и ВСЕ. И помочь более качественно оптимизировать запрос дальше (кроме селективности и коэффициентов), могут ТОЛЬКО ГИСТОГРАММЫ. То есть, информация о распределении конкретных значений. И с гистограммой только сервер бы понял, что по FIELD = 1 выбирается ПОЛОВИНА ключей, а не среднее число равное обратному от селективности (утрирую). И что это равенство ХУЖЕ, чем BETWEEN по конкретным значениям. > Я по скудности своего воображения уже предложил вариант, не могу > сказать что он идеален - но всё же лучьше константы ИМХО ... прежде чем воображать, надо все-таки понимать методы доступа, которыми оперирует сервер в тех или иных случаях. -- Dmitri Kuzmenko, www.ibase.ru, (495) 953-13-34 --~--~---------~--~----~------------~-------~--~----~ -~----------~----~----~----~------~----~------~--~---

