如何解决百万级数据查询优化

参考——

一、SQL优化——使用索引查询

    造成全表查询的(索引失效的情况):避免null值查询。索引列的数据不要大量重复。where语句中or(union替代)、in not in(between and)、like、!=和<>符号的使用。where子查询中使用参数引入( select id from t where num=@num 可以改为强制查询使用索引: select id from t with(index(索引名)) where num=@num)、 where 子句中对字段进行表达式操作(select * from user where id/2 =100 强制改为select * from user where id =100*2)、where字句中对字段进行函数操作的、在where字句等号左面使用函数、算数运算及其他运算。 索引勿滥用:在where及order by涉及的列上建索引。索引并不是越多越好 数据量的优化:尽量使用数字型字段(字符增加存储开销)、尽可能的使用vachar/nvarchar代替char/nchar(节省存储空间),避免临时表过多的创建和删除,尽量使用表变量来代替临时表、尽量避免大数据量的返回、游标操作数据超过1万行不好等 java方面:尽量少早对象、大数据和小数据的操作分开、使用jdbc操作数据库、控制好内存,让数据流动,而不是全部在内存、做好缓存。 分区表的创建

二、数据库优化

造成全表查询的(索引失效的情况):避免null值查询。索引列的数据不要大量重复。where语句中or(union替代)、in not in(between and)、like、!=和<>符号的使用。where子查询中使用参数引入( select id from t where num=@num 可以改为强制查询使用索引: select id from t with(index(索引名)) where num=@num)、 where 子句中对字段进行表达式操作(select * from user where id/2 =100 强制改为select * from user where id =100*2)、where字句中对字段进行函数操作的、在where字句等号左面使用函数、算数运算及其他运算。 索引勿滥用:在where及order by涉及的列上建索引。索引并不是越多越好 数据量的优化:尽量使用数字型字段(字符增加存储开销)、尽可能的使用vachar/nvarchar代替char/nchar(节省存储空间),避免临时表过多的创建和删除,尽量使用表变量来代替临时表、尽量避免大数据量的返回、游标操作数据超过1万行不好等 java方面:尽量少早对象、大数据和小数据的操作分开、使用jdbc操作数据库、控制好内存,让数据流动,而不是全部在内存、做好缓存。 分区表的创建 二、数据库优化
经验分享 程序员 微信小程序 职场和发展