Commit 3688aea7 authored by 王雷's avatar 王雷 😹

Update (SQL)优化分析与方法.md

parent adc80495
...@@ -100,7 +100,7 @@ limit ...@@ -100,7 +100,7 @@ limit
5. 创建外键,这是一把双刃剑,有外键关系的表在进行关联时相对于索引还有一定的提升,但使用了外键在对数据进行增删改的时候有一定的顺序影响,因此我不建议大家使用外键。 5. 创建外键,这是一把双刃剑,有外键关系的表在进行关联时相对于索引还有一定的提升,但使用了外键在对数据进行增删改的时候有一定的顺序影响,因此我不建议大家使用外键。
6. 条件类型,在执行查询时,作为变量的条件要尽可能的与要比对的数据列类型一致,减少数据库引擎转换数据类型的时间; 6. 条件类型,在执行查询时,作为变量的条件要尽可能的与要比对的数据列类型一致,减少数据库引擎转换数据类型的时间;
7. 如果要参与比对的条件需要用到函数,则尽量避免在数据列上使用,这样会造成索引失效,而形成全表扫描,增加数据量; 7. 如果要参与比对的条件需要用到函数,则尽量避免在数据列上使用,这样会造成索引失效,而形成全表扫描,增加数据量;
8. 如果查询条件中对同一个数据列多个选项,不要使用 or 进行条件关联,而是使用 in; 8. 如果查询条件中对同一个数据列多个选项,不要使用 or 进行条件关联,而是使用 in;
9. 如果查询条件中是一个变量可能符合多个数据列,可以将 in 反过来写,如,订单表中,想要查找 **未交费****未开票****未发货** 的数据,则条件可以写为 ***where 'N' in (pay_status, invoice_status, send_status)*** 9. 如果查询条件中是一个变量可能符合多个数据列,可以将 in 反过来写,如,订单表中,想要查找 **未交费****未开票****未发货** 的数据,则条件可以写为 ***where 'N' in (pay_status, invoice_status, send_status)***
10. 如果查询条件包含较多的 or,可以使用 union all 来分解为多个 and 条件的 sql,避免因为使用 or 关系造成索引失效; 10. 如果查询条件包含较多的 or,可以使用 union all 来分解为多个 and 条件的 sql,避免因为使用 or 关系造成索引失效;
11. 避免不必要的分组和排序; 11. 避免不必要的分组和排序;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment