如题:在执行数据库查询时,如果要查询的数据有很多,假设有1000万条,用什么办法可提高查询速度?在数据库或java代码方面有什么优化的办法?
1. 在数据库设计方面
(1)建立索引(合理的选择主键..)
(2)分区(MySql,比如按时间分区)
(3)尽量使用固定长度的字段。(能使用char就不实用varchar,例如身份证ID是固定的18位)
(4)限定字段长度。(不盲目使用大字段长度,够用就行)
2. 在数据库I/O方面
(1)增加缓冲区
(2)如果涉及表的级联,不同的表存储在不同的磁盘上,以增加I/O速度。
3. 在SQL语句方面
(1)优化SQL语句,减少比较次数
(2)限制返回条数目(使用分页技术,比如mysql中使用limit)
(3) oracle 9i之前的版本 查询语句时 SELECT * FROM 其中*代表col列名,如果可以直接用
SELECT 列名1,列名2,...FROM 代替SELECT * FROM效率会更快。
4. 在Java语句方面
(1)如果是反复使用的查询,使用PreparedStatement减少查询次数
(2)使用根据业务交互特点选择使用页面缓存+本地磁盘缓存+服务器端缓存减少响应时间
------------------------------------------------------------------------------------------------------------------
合理增加对象、多占用一点内存可能是系统相应性能下降0.1ms,但一次不必要或不合理的查询就可能使系统慢下100ms。