最佳答案:通常我们的SQL都是写在代码中的,执行一次SQL需要经历网络传输、SQL的执行、如果是查询操作,会有查询结果返回,再每一个步骤中,都需要注意效率问题。(第二部分会着重说SQL的一些经验)减少数据访问(
通常我们的SQL都是写在代码中的,执行一次SQL需要经历网络传输、SQL的执行、如果是查询操作,会有查询结果返回,再每一个步骤中,都需要注意效率问题。(第二部分会着重说SQL的一些经验)
减少数据访问(减少磁盘访问) :使用索引;
返回更少数据(减少网络传输或磁盘访问) :数据分页处理、只返回需要的字段;
减少交互次数(减少网络传输) :批量执行、使用存储过程;
减少服务器CPU开销(减少CPU及内存开销):使用绑定变量、合理使用排序、减少比较操作、大量复杂运算在客户端处理;
利用更多资源(增加资源)。
前导模糊查询,会导致索引失效:where name like '%XX';
数据区分度不大,不建议使用索引:where gender = 'M';性别只有男、女、未知三种;
等号左边有函数,会索引失效:where LENGTH(col1) = 10;
隐式转换的问题:where col2 = '100',col2列是数字,等号左右类型不一致,col2会隐式转换成字符串;
尽量不好使用负向查询,例如:!=、not in、not exists;
单列索引不存null值,复合索引不存全为null的值(索引列尽量使用not null的约束并设置默认值);
索引不是越多越好。