GBase 8s
适配迁移
问答

SQL 错误 [ErrorCode : -243] [SQLState : IX000] : 在表 ((Temp Table For Collection Subquery)) 中不能定位。

发表于2024-08-05 14:01:40233次浏览4个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】: 

【操作系统】:

【CPU】:

【问题描述】*:  SQL 如下:

SELECT
    con.accept_no AS acceptNo,
    con.consign_org_name AS consignOrgName,
    con.accept_datetime AS acceptDateTime,
    ci.event_name AS caseName,
    ci.event_no AS caseNo,
    ci.id,
    ci.occurrence_datetime AS occurrenceDatetime,
    ci.event_brief AS caseBrief,
    ci.case_property AS caseProperty,
    get_dict_value(
        ci.case_property,
        'CASE_PROPERTY'
    ) AS casePropertyName
FROM
    v_event_info ci
LEFT JOIN consignment con ON
    con.event_id = ci.id
INNER JOIN(
        SELECT
            t2.rid
        FROM
            (
                SELECT
                    rownum rn,
                    t.rid
                FROM
                    (
                        SELECT
                            /*+INDEX(ci I_CI_OCCURRENCE_DATETIME)*/
                            con.rowid AS rid
                        FROM
                            v_event_info ci
                        LEFT JOIN consignment con ON
                            con.event_id = ci.id
                        WHERE
                            1 = 1
                            AND con.delete_flag = '0'
                            AND con.status = '2'
                            AND con.is_append = '0'
                            AND ci.internal_match = '1'
                            AND ci.INIT_SERVER_NO ='530600'
                            AND con.INIT_SERVER_NO ='530600'
                        ORDER BY
                            con.accept_datetime DESC NULLS LAST
                    ) t
                WHERE
                    1 = 1
                    AND rownum <=0
            ) t2
        WHERE
            1 = 1
            AND t2.rn >=10
    ) tt ON
    con.rowid = tt.rid
ORDER BY
    ci.occurrence_datetime DESC
 

评论

登录后才可以发表评论
用户头像
liaosnet发表于 2年前
这复杂的语句,尽量使用dirty read
尽量优化语句,使之索引有效。
GBase用户17847发表于 2年前
@liaosnet:这也不是很复杂啊 不理解这个报错是什么意思
用户头像
liaosnet发表于 2年前
@GBase用户17847:243错误,一般是锁冲突机制(并发情况下才会有锁冲突)。
大概率是顺序扫描导致的,别的会话锁了待查询的记录。
可以使用dirty read查询被锁的记录,也可以设置锁等,等其它会话释放锁。
还可能是语句没有走索引,所以可能需要优化语句,尽量走索引。
最佳回答
曾浩轩发表于 2个月前
围观了。