千万数据库的查询优化

完整如下:https://www.cnblogs.com/peke/p/8036172.html

1)数据库设计方面:
a.尽量避免全表扫描,在where及order by设计的列建立索引;
b.尽量避免where子句对字段null值判断
c.并不是所有所有对查询都有效,例如性别..
d.索引不是越多越好
e.尽可能避免更新索引数据列
f.尽量使用数字型字段
g.尽量使用varchar/nvarchar代替char/nchar,因为变长字段存储空间小,且对于查询来说在一个相对较小的字段内搜索效率更高
h.尽量使用表变量代替临时表
i.避免频繁创建和删除临时表
2)SQL语句方面:
a. 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
b. 应尽量避免在 where 子句中使用 or 来连接条件,可以使用union all
c.in 和 not in 也要慎用,否则会导致全表扫描
d. 下面的查询也将导致全表扫描:select id from t where name like ‘%abc%’
e. 如果在 where 子句中使用参数,也会导致全表扫描
f. 应尽量避免在 where 子句中对字段进行表达式操作
g. 应尽量避免在where子句中对字段进行函数操作
h. 不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。
i. 不要写一些没有意义的查询
j. 很多时候用 exists 代替 in 是一个好的选择
k. 任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
l. 尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。
m. 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。
n. 尽量避免大事务操作,提高系统并发能力。
3)java方面:重点内容
a.尽可能的少造对象。
b.合理摆正系统设计的位置。大量数据操作,和少量数据操作一定是分开的。大量的数据操作,肯定不是ORM框架搞定的
c.使用jDBC链接数据库操作数据
d.控制好内存,让数据流起来,而不是全部读到内存再处理,而是边读取边处理;
e.合理利用内存,有的数据要缓存
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值