Добавлено: 24 фев 2007, 20:16
Низкий поклона за разборку статистики.
Дубликатные ключи, видимо, от того что в таблицах (в столбцах <tbl>_VAL) много одинаковых значений: в строковых - пустые строки, в числовых и датах - нули (база только начинается). Но, ведь это временно и, потом, почему в базе не может быть преобладающего количества одинаковых значений: мало ли что там может храниться. Впрочем, дубликаты, дубликатами, а план то меняется после обновления статистики, а дубликатные были и до и после.
Просто мучает вопрос: почему после массового insert'а статистика индексов была как бы "правильная" с точки зрения скорости выполнения запроса, а после обновления статистики - стала фиговой с этой же точки зрения. Следовательно существовало состоянии базы "какое мне надо". Если бы этого состояния не было, то и сравнивать было бы не с чем. И тогда оставалось бы ковыряться только в индексах. Что же это за лохматый зверь такой - статистика, которая жизнь портит.
Конечно, "руки" у разработчика должны расти из правильного места. Попробую воспользоваться вашими советами. Спасибо.
Великодушно прошу прощения, действительно, посмотрел внимательно и план от вышеприведенного запроса на самом деле такой как вы описываете:kdv писал(а):В то, что этот индекс взялся как join для order by a57.val - я не верю.
Скорее план взят не оттуда. Т.к. при order by в плане будет или plan sort или слово order.
Код: Выделить всё
PLAN JOIN (a57 ORDER VAL_STR_IDX1,a113 INDEX (VAL_STR_IDX5),a112 INDEX (VAL_STR_IDX5),a88 INDEX (VAL_BOOL_IDX5,VAL_BOOL_IDX1))
Просто мучает вопрос: почему после массового insert'а статистика индексов была как бы "правильная" с точки зрения скорости выполнения запроса, а после обновления статистики - стала фиговой с этой же точки зрения. Следовательно существовало состоянии базы "какое мне надо". Если бы этого состояния не было, то и сравнивать было бы не с чем. И тогда оставалось бы ковыряться только в индексах. Что же это за лохматый зверь такой - статистика, которая жизнь портит.
Конечно, "руки" у разработчика должны расти из правильного места. Попробую воспользоваться вашими советами. Спасибо.