Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.3.3-1
Description
Currently if MariaDB checks whether possibility to use range access based on [NOT] IN predicate with a long list of values it build SEL_TREEs taking huge amount of memory.
Meanwhile using CTE specified by table value constructor such a predicate could be transformed into an equivalent [NOT] IN subquery:
SELECT ... WHERE ... (expr1, ...) [NOT] IN (value_list) ...;
|
=>
|
WITH t(col1, ...) AS (SELECT * FROM VALUES value_list)
|
SELECT ... WHERE ... (expr1, ...) [NOT] IN (SELECT * FROM t)...;
|
Attachments
Issue Links
- causes
-
MDEV-14281 Wrong result from query with NOT IN predicate in WHERE
- Closed
-
MDEV-17795 Query with long IN(...) list in WHERE about 40 times slower
- Stalled
-
MDEV-20105 Case for bringing in_subquery_conversion_threshold back in next possible release
- Closed
-
MDEV-20900 IN predicate to IN subquery conversion causes performance regression
- Closed
- is blocked by
-
MDEV-12172 Implement tables specified by table value constructors.
- Closed