"""Dmitry Yemanov писал(а):

> Только по нему или по обоим полям?

виноват при данной статистике по обеим
(хотелось привести пример по проще
взял маленькую табличку)
при статистике cost 0,00117647054139524698
только парент

мучает в основном вопрос что нуллы
занимают большую часть значений, а
остальные данные "почти" уникальны
(повторений мало) и запрос который
должен был вернуть конкретную запись
выбирает слишком много записей
которые в условии стоят is null

более понятный пример из жизни:
есть таблица документов (document) :
id - идентификатор
parent - ссылка на главный документ (если
parent is null то это заголовок документа
если заполнен то позиции документа)
documenttypekey - тип документа
documentdate - дата документа

 запрос типа

select *
from
  document doc
where
  doc.documenttypekey = :documenttypekey
  and
  doc.documentdate = :documentdate
  and
  doc.parent is null

берет индекс parent
DOCUMENTDATE             0,00106269924435764551
PARENT                           0,00000123205666113790358
DOCUMENTTYPEKEY      0,0285714287310838699

мне понятно что это более "хороший"
индекс для оптимизатора, но в
конкретном случае 6,5 млн. документов  у
которых в среднем до 10 позиций
получаем 650 тыс. у которых parent is null, а
документов конкретного типа за
конкретную дату меньше 100
получаем небольшие тормоза :(

но наверное зря я здесь про это, это
больше проблемы конкретной структуры
и конкретной реализации
а жаль :(

С уважением, Леонид Агафонов

P.S. Указывать план и делать + 0 мы умеем :)

Ответить