关于把long类型的参数直接传到xml中当sql查询的参数非常慢这件事

起初,有一张表超级大想要将表复制下来 如果查出来list再去复制这将非常慢,听了同事的建议使用了insert into (select * from table)速度得到了显著改善。可是我写代码的时候,再调用接口的时候发现足足有15s,而navicat执行sql语句只有400ms,感觉哪里出了问题但还不知道,最终经过同事的明察秋毫发现我的传参出了问题。

sql如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
INSERT INTO quality_evaluate_autoform (
            SELECT
                UUID_SHORT(),
                form_name,
                form_code,
                NULL,
                CASE
                    WHEN fill_state != '未填写' THEN
                        '已填写'
                    when fill_state = '未填写' then
                    '未填写'
                    END AS fill_state,
                signature_number,
                0,
                NULL,
                NULL,
                file_token,
                NULL,
                default_form_data,
                form_data,
                html_original_body,
                html_body,
                NULL,
                #{id},
                NULL,
                ref_autoform_htmldata_id,
                ref_autoform_id,
                ref_directory_tree_node_id,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                now(),
                NULL,
                now(),
                0,
                NULL,
                NULL,
                NULL
            FROM
                quality_evaluate_autoform
            WHERE
                ref_wbs_node_id = #{wbsNodeId}
              AND delete_flag = 0)

  

就是因为#{wbsNodeId} 这个参数我在代码传参时候不小心用了long类型而导致的!我的天!400ms的事情因为一个类型转换变成了15s,而且还因为转换类型使得ref_wbs_Node_id上的索引失效!所以一定要仔细看好每一步的传参!

1. 用or索引失效——解决用in 代替or

2. 字段使用函数导致索引失效

3. 隐式类型转换会使索引失效!(我就是犯了这个)

4. like +”%param%“ 索引失效

5. 如果查询索引辨识度低,索引可能也不会用

6. NULL值:如果索引列包含NULL值,并且查询条件中没有明确处理NULL值的情况,可能会导致索引失效

posted @   nitianxiaozi  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示