| Server IP : 172.67.156.203 / Your IP : 216.73.216.72 Web Server : Apache System : Linux gator4057.hostgator.com 5.14.0-687.17.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jun 22 07:21:26 EDT 2026 x86_64 User : badawi ( 1130) PHP Version : 8.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/firebird/sql.extensions/ |
Upload File : |
------------------
Expression indices
------------------
Function:
Allow to index arbitrary expressions applied to the row values, hence allowing
indexed access paths to be used for expression-based predicates.
Author:
Oleg Loa <[email protected]>
Dmitry Yemanov <[email protected]>
Syntax rules:
CREATE [UNIQUE] [{ASC[ENDING] | DESC[ENDING]}] INDEX <index_name> ON <table_name>
COMPUTED [BY] ( <value_expression> )
Scope:
DSQL (DDL)
Example(s):
1. CREATE INDEX IDX1 ON T1 COMPUTED BY ( UPPER(COL1 COLLATE PXW_CYRL) );
SELECT * FROM T1 WHERE UPPER(COL1 COLLATE PXW_CYRL) = '<capital cyrillic letters sequence>'
-- PLAN (T1 INDEX (IDX1))
2. CREATE INDEX IDX2 ON T2 COMPUTED BY ( EXTRACT(YEAR FROM COL2) || EXTRACT(MONTH FROM COL2) );
SELECT * FROM T2 ORDER BY EXTRACT(YEAR FROM COL2) || EXTRACT(MONTH FROM COL2)
-- PLAN (T2 ORDER IDX2)
Note(s):
1. An expression used in the index declaration must match a predicate expression precisely
to allow the engine to choose an indexed access path. Otherwise, the given index won't be used
for a retrieval/sorting.
2. Expression indices have exactly the same features and limitations as usual indices, with the
only exception that, by definition, they cannot be composite (multi-segment).