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
-
-
MDEV-33560 Spider: query with long IN clause has performance issues
-
- Confirmed
-
- is blocked by
-
MDEV-12172 Implement tables specified by table value constructors.
-
- Closed
-