大数据量建索引提高查询速度问题
2009-08-27 10:13
309 查看
曾经做过一个项目---外汇交易管理系统。
其中有一个报价功能,需要保存一个月的数据集,数据量差不多2千多万条,当然查询的时候,自然会造成低速率,连接超时问题,甚至会造成程序出错!如何解决这些问题呢?
答案是创建索引和优化SQL语句!
下边讲一下怎样创建索引?
t_priceinfo------报价表,其中有两千多万条数据!
priceid ------相当于一个表的主键,但并不是主键!
intime ------报价的时间!
以下是SQL语句
select * from t_priceinfo where priceid>=(select max(priceid) from t_priceinfo)-56 and priceid<=(select max (priceidfrom t_priceinfo)-28 order by intime desc
先分析一下这个SQL语句。
这个SQL语句涉及到分页问题,暂且不管这个。
造成查询速度慢,从SQL语句来看,无非是两个因素引起的 -----max 和 order by
max 函数,其实从oracle中的内部机制来讲,它应该是对字段进行进行排序,然后在从排好序的数据中迅速找出最大值,这里应该涉及到有关数据结构的问题。假设你没有对该字段创建索引,那么在查询时会在一群无序的字段中找出最大值,显然是相当不容易的,自然会造成速度一慢再慢,但若是先对字段创建索引呢,显而易见,最大值的查询也就易如反掌了,速度自然居高不下。。
order by 也是对某个字段进行排序,这显然在数据量大的时候会造成时间浪费问题,效率就不用提了,还不如直接对其创建索引,排序由oracle 内部机制来实现。
同样一个SQL语句,在没有对priceid 和intime创建索引前,导致查询超时,程序返回不了数据,以致出错。但是创建索引后,查询速度一高再高,程序运行起来犹如翻云覆水,哈哈。。。
总结,在遇到针对大量数据的某个字段采用聚合函数时,要考虑使用创建索引,这是提高速度的一个相当好的办法。。。嘿嘿。。。
其中有一个报价功能,需要保存一个月的数据集,数据量差不多2千多万条,当然查询的时候,自然会造成低速率,连接超时问题,甚至会造成程序出错!如何解决这些问题呢?
答案是创建索引和优化SQL语句!
下边讲一下怎样创建索引?
t_priceinfo------报价表,其中有两千多万条数据!
priceid ------相当于一个表的主键,但并不是主键!
intime ------报价的时间!
以下是SQL语句
select * from t_priceinfo where priceid>=(select max(priceid) from t_priceinfo)-56 and priceid<=(select max (priceidfrom t_priceinfo)-28 order by intime desc
先分析一下这个SQL语句。
这个SQL语句涉及到分页问题,暂且不管这个。
造成查询速度慢,从SQL语句来看,无非是两个因素引起的 -----max 和 order by
max 函数,其实从oracle中的内部机制来讲,它应该是对字段进行进行排序,然后在从排好序的数据中迅速找出最大值,这里应该涉及到有关数据结构的问题。假设你没有对该字段创建索引,那么在查询时会在一群无序的字段中找出最大值,显然是相当不容易的,自然会造成速度一慢再慢,但若是先对字段创建索引呢,显而易见,最大值的查询也就易如反掌了,速度自然居高不下。。
order by 也是对某个字段进行排序,这显然在数据量大的时候会造成时间浪费问题,效率就不用提了,还不如直接对其创建索引,排序由oracle 内部机制来实现。
同样一个SQL语句,在没有对priceid 和intime创建索引前,导致查询超时,程序返回不了数据,以致出错。但是创建索引后,查询速度一高再高,程序运行起来犹如翻云覆水,哈哈。。。
总结,在遇到针对大量数据的某个字段采用聚合函数时,要考虑使用创建索引,这是提高速度的一个相当好的办法。。。嘿嘿。。。
相关文章推荐
- Oracle模糊查询之(4.采用全文索引解决模糊查询,给出具体步骤)采用全文索引解决模糊查询速度慢的问题[主文]
- 利用SQL索引提高查询速度
- 如何使用索引提高查询速度
- 【索引】索引的作用?为什么能够提高查询速度?以及索引用法(索引的原理)
- 通过索引,极大提高MySQL大数据量下的查询效率
- 利用SQL索引提高查询速度
- 为提高查询速度建立索引
- 关于模糊查询时的索引问题.(了解一下,对提高代码效率非常有好处)
- 提高MYSQL大数据量查询的速度
- 用好SELECT索引 提高MySQL查询统计速度
- 如何使用索引提高查询速度
- 使用索引提高查询速度
- SQL优化-索引 (三)只要建立索引就能显著提高查询速度
- 数据库----提高大数据量查询速度
- 索引是怎样提高查询的速度的,原理是什么?
- 建立索引提高数据库查询速度
- 索引的作用?为什么能够提高查询速度?(索引的原理)
- mongodb nosql 大数据提高查询速度-索引
- 通过建立索引提高数据库查询速度的原理
- 通过非聚集索引让select count(*) from 的查询速度提高几十倍、甚至千倍