-
Notifications
You must be signed in to change notification settings - Fork 564
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[[TPC-DS]]: YQL-17364: tpcds-49 Неоптимальный план подзапроса (не фильтруется таблица перед джойном) #2523
Comments
Problem type: yt <{Query text -- START PARAMETERS pragma yt.OperationSpec='{time_limit=3600000}'; -- START COMMON HEADER -- NB: Subquerys
%%}> ##>> 2023-12-08 13:21:03.396 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847/results?filters=DATA,EXEC_STATISTICS,PLAN,PROGRESS,AST&version=999999&columns_preset=false 200 47803## ##>> 2023-12-08 13:21:03.395 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847?version=1000000 200 2429## ##>> 2023-12-08 13:21:03.216 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847/results?filters=&columns_preset=false 200 400## "issues": [ { "code": 0, "column": 0, "file": "", "issues": [], "message": "DQ cannot execute the query. Cause: unsupported yt pragma: operationspec", "row": 0, "severity": "S_INFO" } ], "message": "Optimization", "row": 0, "severity": "S_INFO" } ], "status": "ABORTED", "updatedAt": "2023-12-08T10:21:00.664Z", "version": 1000000 }%% ##>> 2023-12-08 13:21:01.288 GET https://yql-api-test.yandex-team.ru/api/v2/operations?project_service_slug=psushin&page_size=50&sort=-createdAt&page=0&filters=(username%3Dpsushin) 200 23934## ##>> 2023-12-08 13:20:59.257 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847/results?filters=DATA,EXEC_STATISTICS,PLAN,PROGRESS,AST&version=999999&columns_preset=false 200 44373## ##>> 2023-12-08 13:20:59.249 GET https://yql-api-test.yandex-team.ru/api/v2/operations?project_service_slug=psushin&page_size=50&sort=-createdAt&page=0&filters=(username%3Dpsushin) 200 23933## ##>> 2023-12-08 13:20:59.249 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847?version=3 200 2428## ##>> 2023-12-08 13:20:58.983 POST https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847 200 432## ##>> 2023-12-08 13:20:33.233 GET https://yql-api-test.yandex-team.ru/api/v2/operations?project_service_slug=psushin&page_size=50&sort=-createdAt&page=0&filters=(status%3DPENDING%7Cstatus%3DRUNNING%7Cstatus%3DABORTING),(username%3Dpsushin) 200 468## ##>> 2023-12-08 13:20:33.215 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847/results?filters=&columns_preset=false 200 394## "issues": [ { "code": 0, "column": 0, "file": "", "issues": [], "message": "DQ cannot execute the query. Cause: unsupported yt pragma: operationspec", "row": 0, "severity": "S_INFO" } ], "message": "Optimization", "row": 0, "severity": "S_INFO" } ], "status": "RUNNING", "updatedAt": "2023-12-08T10:20:04.845Z", "version": 3 }%% ##>> 2023-12-08 13:20:04.887 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847/results?filters=DATA,EXEC_STATISTICS,PLAN,PROGRESS,AST&version=3&columns_preset=false 200 44368## ##>> 2023-12-08 13:20:04.880 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847/results?filters=DATA,EXEC_STATISTICS,PLAN,PROGRESS,AST&version=2&columns_preset=false 200 44368## ##>> 2023-12-08 13:20:04.879 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847?version=3 200 2423## ##>> 2023-12-08 13:20:04.224 GET https://yql-api-test.yandex-team.ru/api/v2/operations?project_service_slug=psushin&page_size=50&sort=-createdAt&page=0&filters=(username%3Dpsushin) 200 23928## ##>> 2023-12-08 13:20:04.208 GET https://yql-api-test.yandex-team.ru/api/v2/operations?project_service_slug=psushin&page_size=50&sort=-createdAt&page=0&filters=(username%3Dpsushin) 200 23928## ##>> 2023-12-08 13:20:04.062 GET https://yql-api-test.yandex-team.ru/api/v2/operations?project_service_slug=psushin&page_size=50&sort=-createdAt&page=0&filters=(username%3Dpsushin) 200 23928## ##>> 2023-12-08 13:20:03.725 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847/results?filters=DATA,EXEC_STATISTICS,PLAN,PROGRESS,AST&version=2&columns_preset=false 200 127## ##>> 2023-12-08 13:20:03.713 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847/results?filters=DATA,EXEC_STATISTICS,PLAN,PROGRESS,AST&version=1&columns_preset=false 200 127## ##>> 2023-12-08 13:20:03.706 GET https://yql-api-test.yandex-team.ru/api/v2/operations/6572edd3074f35528d6c9847?version=1 200 2423## |
|
mrrun log: https://gist.github.com/qrort/15a681a6564a9e25f32bfe608c8636ed' Вижу только, что
|
Да, тут проблема в том, что не пушдаунится фильтр на правую сторону left join. У нас такого оптимизатора в данный момент нет - мы умеем только пушдаунить фильм сквозь inner join или на левую сторону left join. Напишу здесь алгоритм проброса фильтра на правую часть left join. Рассмотрим запрос
Данный запрос можно переписать в виде
Этот запрос в свою очередь эквивалентен
Что в свою очередь эквивалентно
Здесь p2 - предикат полученный заменой исходных колонок в p(b) на null (т.е. это константа) В простых случаях получается что вторая часть union all пропадает. Например, если предикат имеет вид
или
или
Но, например, в случае предиката
или
или
|
Summary: Запрос Такой запрос можно переписать в виде
Здесь p2 - предикат полученный заменой исходных колонок в p(b) на null (т.е. это константа) |
unmodified subquery:
rowcount: 3601932372, time: 00:18:14 wr filter:
row_count: 3295331031, time: 00:13:05 |
…db-platform#2523 (ydb-platform#2964) Co-authored-by: Andrey Neporada <aneporada@ydb.tech>
No description provided.
The text was updated successfully, but these errors were encountered: