`
AutomaticThoughts
  • 浏览: 165448 次
社区版块
存档分类
最新评论

大数据量查询的优化

 
阅读更多

服务器软/硬件配置如下: 
CPU:四路至强 2.0G; 
内存:8G; 
操作系统:Windows Server 2003 SP2; 
数据库:SQL Server 2005 SP2; 
    某个库中有一个论坛主帖表,每天增加数千的数据,现在整个表的数据量已经是百万级。由于论坛不断升级,增加了N个字段,为了实现良好的扩展性,将某些字段移到了一个子表中,而子表中的某个字段又是外键关联另一个表。没有添加任何非聚集索引。 
    当使用top查询N条数据的时候,就算三个表之间进行关联查询,由于服务器性能出众和SQL Server 2005对大数据量的处理能力的提升,查询时间都能在个位数下;但当需要进行分页查询的时候(使用select …where id not in (selet …) 的方式),竟然数十秒甚至几分钟都完成不了查询。 
    分析一下有什么地方可以优化的: 
1、 以前是两个表,一个表是百万级数据,另一个表只有几条固定的数据;现在是两个百万级的数据表,再加上一个只有几条固定数据的表,两个百万级别的表进行关联查询,性能肯定有影响。 
2、 无论是两个表还是三个表,表与表之间的关联是写在视图里的,是否可以创建索引视图进行优化? 
3、 查询的时候大多数会加入两个以上的字段进行条件查询,亦会加入一到两个的字段进行排序,在这些字段上创建单独或复合的非聚集索引应该可以得到较大的性能提升。 
4、 查询语句是否导致了全表扫描? 
结果: 
1、 将作为条件查询的字段放在主表里,子表只放一些基本上不会作为条件查询的字段,从而可以使三个表关联查询的情况只发生于查询单条数据。 
2、 这个查询所使用的视图并没有指定查询条件,因此索引视图无用武之地 
3、 因为由于需求的原因,经常使用的数据占了表数据量的90%左右,经测试,对这些字段添加非聚集索引对性能提升影响不大;而对两个常用的排序字段(创建时间,最后更新时间)分别添加单独的索引,并对这两个字段添加复合索引,对性能的提高的影响是非常大的。 
4、 经过分析,这个查询中不存在全表扫描。 
        经过以上优化,直接在数据库执行对论坛帖子查询的存储过程(整个系统对数据库的操作大部分都是使用存储过程),无论是查询top N条数据,还是进行每页50-200条的分页查询,经肉眼观察都在1秒内完成。至于具体详细的查询时间,并没有用SQL Profiler监测。优化后,就算执行千万级的查询,查询也不会太费劲。 

分享到:
评论

相关推荐

    百万数据级快速查询优化技巧

    标题与描述概述的知识点主要集中在数据库查询优化技巧上,尤其针对拥有百万级别数据量的数据库。以下是对这些知识点的详细解读: ### 数据库快速查询优化技巧 #### 1. 避免全表扫描,优化WHERE子句 - **空值判断**...

    Oracle 大数据量操作优化

    ### Oracle大数据量操作优化 在面对Oracle数据库中的大数据量操作时,如何有效地提升操作性能成为了一个重要的课题。本文将从不同角度出发,详细介绍如何通过多种技术手段和策略优化Oracle数据库的大数据量操作。 ...

    Web大数据量页面优化实践

    本文将深入探讨“Web大数据量页面优化实践”,结合提供的标签“源码”和“工具”,我们将从代码优化和利用工具两方面来讨论这个问题。 一、代码优化 1. **懒加载**:对于大数据量的页面,一次性加载所有内容可能...

    Oracle大数据量操作优化

    Oracle大数据量操作优化

    大数据量多线程执行分页查询

    3. **分页查询**:分页是一种优化大数据量查询的技术,它将结果集分割成多个小块(页面),每次只返回用户请求的一部分数据。这样不仅可以减轻服务器压力,还能减少网络传输的负担,提高响应速度。 4. **C#线程**:...

    Oracle 大数据量操作性能优化

    Oracle 大数据量操作性能优化 Oracle大数据量操作性能优化是指在处理大量数据时,如何提高 Oracle 数据库的性能。...Oracle 大数据量操作性能优化技术可以提高 Oracle 数据库的性能,提高数据处理效率和查询速度。

    大数据量高并发的数据库优化

    本文将深入探讨大数据量高并发场景下的数据库优化策略,涵盖索引优化、查询优化、存储类型选择、以及避免全表扫描等关键知识点。 ### 索引优化 索引是提高数据库查询效率的关键技术之一。在大数据量高并发的环境下...

    30个mysql千万级大数据SQL查询优化技巧详解

    在处理大数据量的MySQL数据库时,高效的SQL查询显得尤为重要。以下是一些关键的优化技巧,可以帮助你提升查询性能,避免全表扫描,充分利用索引,以及优化查询逻辑: 1. **建立索引**:在`WHERE`和`ORDER BY`涉及的...

    百万数据查询优化海量数据查询优化

    在处理海量数据时,查询优化显得尤为重要,特别是当数据量达到百万级别甚至更高时。查询优化旨在提高数据查询的效率,减少查询时间,提升系统性能。以下是一些关键的优化策略: 1. **合理使用索引**: - **索引...

    mysql大数据量优化

    MySQL数据库在处理大数据量时,性能优化至关重要。以下是一些关键的优化策略和技术: 1. **连接查询与子查询优化**: - **连接查询**(JOIN):当需要从多个表中获取关联数据时,使用连接查询通常比子查询更有效率...

    如何优化大数据量Sql的几点建议

    【SQL数据优化】是数据库管理中的重要环节,尤其是在处理大数据量时,优化SQL查询能显著提升系统的性能。本文主要从三个方面探讨如何优化SQL:索引设计、连接条件和WHERE子句。 首先,**不合理的索引设计**是导致...

    处理group by 查询速度太慢的问题 数据量大.doc

    在实际项目中,遇到了表数据量大导致查询速度很慢的问题。通过记录和优化过程,总结出一些有价值的经验,希望能够帮助读者解决类似的问题。 知识点1:Group By 查询的索引设置 在优化 Group By 查询时,仅对 Group...

    MySQL百万级数据量分页查询方法及其优化建议

    在MySQL中,面对百万级数据量的分页查询,如何高效地进行操作并优化查询性能是数据库管理员和开发人员必须关注的问题。以下是一些常用的方法和优化建议: 1. **直接使用LIMIT语句**:这是最基础的分页查询方式,如`...

    面向互联网应用的大规模数据实时查询优化方法研究.pdf

    金融数据集通常具有数据量大、查询频繁的特点,通过在这种大规模数据集上验证该优化方法,证明了其实用性和有效性。 从文献中我们可以得知,优化大数据场景下的实时查询是一个多方面的综合策略,其中数据压缩、数据...

    大数据量数据存储的优化方案(银行项目)

    因此,如何有效地优化大数据量下的数据存储及查询效率成为了银行信息技术部门面临的关键问题。 #### 二、系统优化现状分析 目前,银行信息系统优化主要集中在以下几个方面: 1. **网络带宽升级**:提高网络传输...

    MySQL大数据量分页查询方法及其优化

    ### MySQL大数据量分页查询方法及其优化 在处理大规模数据集时,MySQL的分页查询是非常常见的需求之一。为了提高查询效率,减少响应时间和资源消耗,开发者需要掌握多种不同的分页查询方法及其优化技巧。本文将详细...

Global site tag (gtag.js) - Google Analytics