-
Type:
Task
-
Status: Closed (View Workflow)
-
Priority:
Major
-
Resolution: Fixed
-
Fix Version/s: 10.3.3
-
Component/s: Optimizer
-
Labels:
-
Sprint:10.3.3-1
SQL Standards starting from SQL-1999 uses the construct <table value constructor> as
one of the alternatives for <simple table>:
<simple table> ::=
|
<query specification>
|
| <table value constructor>
|
| <explicit table>
|
Currently MariaDB uses <table value constructor> only in insert statements:
INSERT INTO t VALUES (1,'xx'), (5,'yyy'), (1,'zzz'); |
With <table value constructor> it will be possible to use such CTE specification:
WITH t (a,c) AS (SELECT * FROM VALUES (1,'xx'), (5,'yyy'), (1,'zzz')) ... |
Now instead of this we have to use something like this:
WITH t (a,c) AS (SELECT 1, 'xx' UNION ALL SELECT 5, 'yyy' UNION ALL 1, 'zzz') ... |
Processing of the latter will take much more memory.
Besides with the possibility of using table value constructors in CTE specifications some optimization transformations for IN predicates will be possible.
- blocks
-
MDEV-12176 Transform [NOT] IN predicate with long list of values INTO [NOT] IN subquery.
-
- Closed
-