UNIQUE DISTINCT hints
Непосредственно после SELECT
возможно добавить SQL хинты unique
или distinct
которые заявляют, что эта проекция порождает данные, содержащие уникальные значения в указанном наборе колонок строковой или колоночной таблицы. Это может, использоваться для оптимизации следующих подзапросов, выполняющихся над этой проекцией, или для записи в мета-атрибуты таблицы при INSERT
(временно не поддерживается для колоночных таблиц).
- Колонки указываются в значениях хинта через пробел.
- Если набор колонок не задан, значит уникальность распространяется на полный набор колонок этой проекции.
unique
- означает уникальные либоnull
значения. По стандарту SQL каждый null уникален: NULL = NULL -> NULLdistinct
- означает полностью уникальные значение включаяnull
: NULL IS DISTINCT FROM NULL -> FALSE- Можно указать несколько наборов колонок в нескольких хинтах у одной проекции.
- Если хинт содержит колонку, которой нет в проекции, он будет проигнорирован.
Примеры
SELECT /*+ unique() */ * FROM Input;
SELECT /*+ distinct() */ * FROM Input;
SELECT /*+ distinct(key subkey) */ * FROM Input;
SELECT /*+ unique(key) distinct(subkey value) */ * FROM Input;
-- Missed column - ignore hint.
SELECT /*+ unique(subkey value) */ key, value FROM Input;