数据库系统设计:SQL设计和编程误区

SQL编程中的潜在计算资源消耗要素:

排序操作,是否可使用索引的已排序特性?

类型转换,是否设置了不恰当的变量类型?

函数调用,是否函数或表达式导致索引的失败?

优化器工作,统计是否正确以及优化器

发现表、索引的低密度造成的IO、CPU问题

建议SQL编程规范

避免不必要的SQL(例:存在性测试)

减少返回的行(例:那些没有where的SQL)

仅选择必要的列(例:select *...)

单行返回和游标

避免排序(例:distinct、union)

使用索引数据排序(例:使用索引列排序或分组)

使用嵌入视图

避免数据类型转换(列和变量在类型、长度的比较)

在索引列上进行表连接

连接查询的结果集避免在多(表)列上排序

小心使用like匹配,避免前like,可使用in替换?

尽量使用exist

避免使用NOt

避免在对比中在列上使用表达式(可能索引失效)

限制不必要函数使用(计算资源、索引限制),设计相关?

 

THE END