SQL优化

如题:在执行数据库查询时,如果要查询的数据有很多,假设有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。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值