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
和 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.合理利用内存,有的数据要缓存
mysql千万级表优化 千万级数据库优化
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Mysql 千万级数据分页优化
Mysql 千万级数据分页优化
数据库 数据 分页 主键 -
前端通用文件下载方案:从 Blob 流处理到实际业务落地
前端文件下载功能!
#前端 #react.js #blob文件流 JSON ios
















