关于sql语句优化问题

tips:
1.尽量避免在where子句中使用!=或<>操作符,否则将导致引擎放弃使用索引而进行全表扫描;
2.查询优化,尽量避免全表扫描,考虑在where/order by涉及的列上建立索引;
3.尽量避免在where子句中进行null值判断,结果同①;
4.尽量避免在where子句中使用or连接,结果同①;
5.慎用in/not in,对于连续的数值,能用between不用in;
6.where子句中若使用参数的改写
eg:select id from t where num = @num 转换为 select id from t with(index(索引名))where num = @ num
7.尽量避免在where子句中对字段进行"表达式" || "函数"操作,结果同①;
8.不要再where子句中的“=”左边进行函数/运算/表达式操作,无法正确使用索引;
9.有些时候考虑用exists代替in
eg:select num from a where num in(select num from b)转换为 select num from a where exists(select 1 from b where num = a.num)
10.索引不是越多越好,需慎重考虑视情况而定;
11.避免更新clustered索引数据列,因为其索引数据列的顺序就是表记录的物理存储顺序,该列值改变后会导致整个表顺序调整;
12.尽量使用数字型字段,若为字符型,引擎在查询和连接时会逐个比较,而数字型比较一次。
13.使用PreparedStatement(预编译),可提高代码的可读性和可维护性;若使用一次的sql语句选择Statement最好,若sql语句多次被执行选择PreparedStatement;
14.防止sql注入(构建特殊的输入作为参数传入web应用程序);
15.批量处理,减少IO数、减少表连接数、尽量使用缓存;
16.考虑用nosql数据库提高效率、使用数据库连接池。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值