查询慢是什么原因

代码如下:

select [HINT_EXPLAIN]
    trade_time as dt,
    code,
    open,
    high,
    low,
    close,
    cumsum(amount)\cumsum(volume) as vwap,
    volume,
    amount
from loadTable("dfs://trading_intraday", "stock_k1min")
where end_date >= trade_time.date() > start_date
context by code, bar(date(trade_time), 1)
order by dt

执行计划如下:

{
    "measurement": "microsecond",
    "explain": {
        "from": {
            "cost": 15
        },
        "map": {
            "partitions": {
                "local": 0,
                "remote": 7080
            },
            "cost": 558683218,
            "detail": {
                "most": {
                    "sql": "select [245767] trade_time,code,open,high,low,close,amount,volume,bar(date(trade_time), 1) as bar from stock_k1min where 2024.01.11 >= ::date(trade_time) > 2024.01.10 [partition = /trading_intraday/202303M_202304M/Key15/1Qy1]",
                    "explain": {
                        "from": {
                            "cost": 6
                        },
                        "where": {
                            "rows": 0,
                            "cost": 247673
                        },
                        "rows": 63840,
                        "cost": 248260
                    }
                },
                "least": {
                    "sql": "select [245767] trade_time,code,open,high,low,close,amount,volume,bar(date(trade_time), 1) as bar from stock_k1min where 2024.01.11 >= ::date(trade_time) > 2024.01.10 [partition = /trading_intraday/202303M_202304M/Key15/1Qy1]",
                    "explain": {
                        "from": {
                            "cost": 2
                        },
                        "where": {
                            "rows": 0,
                            "cost": 3062
                        },
                        "rows": 0,
                        "cost": 3133
                    }
                }
            }
        },
        "reduce": {
            "cost": 143330,
            "sql": "select [98307] trade_time as dt,code,open,high,low,close,cumsum(amount) \ cumsum(volume) as vwap,volume,amount from anonymous_table context by code,bar order by dt asc",
            "explain": {
                "map": {
                    "partitions": {
                        "local": 3037,
                        "remote": 0
                    },
                    "cost": 80326,
                    "detail": {
                        "most": {
                            "sql": "select [245771] trade_time as dt,code as col1,open as col2,high as col3,low as col4,close as col5,cumsum(amount) \ cumsum(volume) as vwap,volume as col7,amount as col8 from anonymous_table context by code,bar [partition = Key5]",
                            "explain": {
                                "contextBy": {
                                    "sortKey": false,
                                    "cost": 1830
                                },
                                "rows": 480,
                                "cost": 1843
                            }
                        },
                        "least": {
                            "sql": "select [245771] trade_time as dt,code as col1,open as col2,high as col3,low as col4,close as col5,cumsum(amount) \ cumsum(volume) as vwap,volume as col7,amount as col8 from anonymous_table context by code,bar [partition = Key26]",
                            "explain": {
                                "rows": 0,
                                "cost": 3
                            }
                        }
                    }
                },
                "merge": {
                    "cost": 10938,
                    "rows": 1280400,
                    "detail": {
                        "most": {
                            "sql": "select [245771] trade_time as dt,code as col1,open as col2,high as col3,low as col4,close as col5,cumsum(amount) \ cumsum(volume) as vwap,volume as col7,amount as col8 from anonymous_table context by code,bar [partition = Key928]",
                            "explain": {
                                "contextBy": {
                                    "sortKey": false,
                                    "cost": 175
                                },
                                "rows": 4800,
                                "cost": 183
                            }
                        },
                        "least": {
                            "sql": "select [245771] trade_time as dt,code as col1,open as col2,high as col3,low as col4,close as col5,cumsum(amount) \ cumsum(volume) as vwap,volume as col7,amount as col8 from anonymous_table context by code,bar [partition = Key1]",
                            "explain": {
                                "rows": 0,
                                "cost": 31
                            }
                        }
                    }
                },
                "reduce": {
                    "cost": 38722,
                    "sql": "select [98307] dt,col1 as code,col2 as open,col3 as high,col4 as low,col5 as close,vwap,col7 as volume,col8 as amount from anonymous_table109985de757f0000 order by dt asc",
                    "explain": {
                        "sort": {
                            "cost": 26895
                        },
                        "rows": 1280400,
                        "cost": 38703
                    }
                },
                "rows": 1280400,
                "cost": 143300
            }
        },
        "rows": 1280400,
        "cost": 558938940
    }
}
(9 min 18 s)

trade_time.是分区列,麻烦帮忙看下这个请求问题!

请先 登录 后评论

1 个回答

wale

不要这么写where end_date >= trade_time.date() > start_date,这样不能分区剪枝,改成:

where trade_time.date() > start_date and trade_time.date()<=end_date

详情请参考一下教程 https://gitee.com/dolphindb/Tutorials_CN/blob/master/database.md#7-%E6%9F%A5%E8%AF%A2%E5%88%86%E5%8C%BA%E8%A1%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9   

7. 查询分区表注意事项


请先 登录 后评论