README.expression_indices 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. ------------------
  2. Expression indices
  3. ------------------
  4. Function:
  5. Allow to index arbitrary expressions applied to the row values, hence allowing
  6. indexed access paths to be used for expression-based predicates.
  7. Author:
  8. Oleg Loa <[email protected]>
  9. Dmitry Yemanov <[email protected]>
  10. Syntax rules:
  11. CREATE [UNIQUE] [{ASC[ENDING] | DESC[ENDING]}] INDEX <index_name> ON <table_name>
  12. COMPUTED [BY] ( <value_expression> )
  13. Scope:
  14. DSQL (DDL)
  15. Example(s):
  16. 1. CREATE INDEX IDX1 ON T1 COMPUTED BY ( UPPER(COL1 COLLATE PXW_CYRL) );
  17. SELECT * FROM T1 WHERE UPPER(COL1 COLLATE PXW_CYRL) = 'ÔÛÂÀ'
  18. -- PLAN (T1 INDEX (IDX1))
  19. 2. CREATE INDEX IDX2 ON T2 COMPUTED BY ( EXTRACT(YEAR FROM COL2) || EXTRACT(MONTH FROM COL2) );
  20. SELECT * FROM T2 ORDER BY EXTRACT(YEAR FROM COL2) || EXTRACT(MONTH FROM COL2)
  21. -- PLAN (T2 ORDER IDX2)
  22. Note(s):
  23. 1. An expression used in the index declaration must match a predicate expression precisely
  24. to allow the engine to choose an indexed access path. Otherwise, the given index won't be used
  25. for a retrieval/sorting.
  26. 2. Expression indices have exactly the same features and limitations as usual indices, with the
  27. only exception that, by definition, they cannot be composite (multi-segment).