【TiDB 版本】 tidb5.0.0
【使用场景】
对一张约5亿行数据的行表join另一张约10w数据的头表,根据where条件筛选后order by多个维度,使用limit限制输出行数
【问题描述】
SELECT /*+ read_from_storage(tiflash[l]),LIMIT_TO_COP() */
l.je_line_id
FROM
hgl_je_line l
JOIN hgl_je_header hjh ON hjh.je_header_id = l.je_header_id
AND hjh.reversed_flag = 0
WHERE
l.tenant_id = 0
AND l.ledger_code = ‘0L’
AND l.company_code = ‘1000’
AND l.partners_num IS NOT NULL
AND l.settle_je_line_id IS NULL
AND l.settle_flag = 1
AND l.currency_code = ‘CNY’
ORDER BY
l.partners_num ASC,
l.gl_date ASC,
l.account ASC,
l.je_num1 ASC,
l.je_line_num ASC
LIMIT 1000,10
如上sql,会导致out of memory Quota
如果只order by je_line_id字段,可以查询出数据