Непосредственно после SELECT
возможно добавить SQL хинты unique
или distinct
, которые заявляют, что эта проекция порождает данные, содержащие уникальные значения в указанном наборе колонок таблицы. Это может, использоваться для оптимизации следующих подзапросов, выполняющихся над этой проекцией, или для записи в мета-атрибуты таблицы при INSERT
.
unique
- означает уникальные либо null
значения. По стандарту SQL каждый null уникален: NULL = NULL -> NULLdistinct
- означает полностью уникальные значение включая null
: NULL IS DISTINCT FROM NULL -> FALSESELECT /*+ 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;