Я задаюсь о выполнении этого показателя:индекс столбца только с 2 различными значениями
У меня есть «Invalid» VARCHAR (1) столбец, который имеет 2 значения: NULL или «Y» У меня есть index on (недействительный), а также (недействительный, last_validated) Last_validated - это datetime (это используется для несвязанного запроса SELECT)
Я помещаю небольшое количество элементов (1-5%) строк в таблицу с этим как «удалить».
Это так, когда я
DELETE FROM items WHERE invalid='Y'
он не выполняет полное сканирование таблицы для поврежденных элементов.
Проблема заключается в том, что фактический DELETE сейчас довольно медленный, возможно, потому что все индексы удаляются по мере их удаления.
Будет ли растровый индекс обеспечивать лучшую производительность для этого? или вообще нет индекса?
Логично, я согласен с вашей точкой # 1; на практике, однако, есть * в некоторых случаях * значительные преимущества в производительности для представления неинтересных значений как NULL в столбце из-за того, что Oracle не хранит все нулевые строки в индексах - если запросы в этом столбце почти всегда интересуются в редких значениях «Y», то наличие non-'Y', представленное как NULL, может иметь огромное влияние на производительность запросов, обновлений и удалений. –
[Эта статья] (https://richardfoote.wordpress.com/2011/08/10/indexing-a-column-with-just-one-distinct-value-all-the-madmen/) более подробно подтверждает @ Заявление ДжеффриКемпа. – GolezTrol