高性能的大型系统经验 -- 数据查询与分页

简介: 本文讨论针对大型数据表(记录数2千万以上)进行数据查找与分页的可行的高效方案。      首先,恰当的索引是必须的。      没有索引的支持,在大数据表中进行查询是不可思议的。关键点在于如何创建索引? 1.建立正确的聚集索引(clustered index)。

     本文讨论针对大型数据表(记录数2千万以上)进行数据查找与分页的可行的高效方案。

     首先,恰当的索引是必须的。

     没有索引的支持,在大数据表中进行查询是不可思议的。关键点在于如何创建索引?

1.建立正确的聚集索引(clustered index)。由于聚集索引的叶子节点就是记录本身,所以选择哪个索引为聚集索引非常关键。通过聚集索引扫描记录更快。

2.根据你的系统的需求总结常用的单个查询条件或综合性的查询条件,对于常用的单个查询条件建立单列索引,对常用的综合性查询条件建立联合索引

3.关于数据库查询引擎如何利用索引,要注意以下几点:

(1)对于单列索引,只要条件列中出现索引列,无论在什么位置,都能利用索引查询。

(2)查询条件中出现联合索引第一列,或者全部,则能利用联合索引。

(3)条件列中只要条件相连在一起,无论前后,都会利用上联合索引。

(4)查询条件中没有出现联合索引的第一列,而出现联合索引的第二列,或者第三列,则都不会利用联合索引查询。 

    

     接下来,我们看如何进行分页。

1.利用索引(或联合索引)将满足条件的记录的主键列INTO到一个临时表(只有一列,与目标表的主键对应)。

2.Count (*) 临时表获取满足条件的记录的总数。

3.从临时表中获取第N页的主键值集合。

4.根据主键值集合从目标表中取出对应的记录以构成所要的Page。

5.释放临时表。      

     按照这种方式进行分页查询,如果满足条件的记录数在几万以内,分页查询都可在1秒内返回。

     最后提醒一句,不要轻易的在大数据表上执行不带条件的Select Count(*) From Table,该操作将非常耗时,而且由于扫描时会在目标表上加S锁,这段期间对目标表的Insert/update/delete操作将被阻塞,从而可能引发Insert/update/delete操作执行超时。 

 

注:本文源于我的SqlServer经验,可能在Oracle中有更好的办法,呵呵:)

目录
相关文章
|
6月前
|
存储 关系型数据库 MySQL
大数据量分页查询怎么优化提速
大数据量分页查询怎么优化提速
81 2
|
6月前
|
缓存 关系型数据库 数据库
关系型数据库高效查询和统计
【5月更文挑战第8天】关系型数据库高效查询和统计
82 7
|
3月前
|
SQL 缓存 监控
优化大型数据库查询的最佳实践
在处理大规模数据时,数据库查询性能的优化至关重要。本文探讨了几种优化大型数据库查询的最佳实践,包括索引策略、查询重写、数据分区和缓存机制。通过这些方法,开发人员可以显著提高查询效率,减少系统负担,提升用户体验。本文还结合实际案例,提供了具体的优化技巧和工具建议,帮助读者有效地管理和优化大型数据库系统。
|
6月前
|
存储 数据处理 数据库
构建高性能的数据库查询引擎
本文将介绍如何构建一个高性能的数据库查询引擎,以提升数据库查询的效率和响应速度。通过优化查询计划、索引设计和数据存储等方面,可以实现更快速和可扩展的数据库查询,为应用程序提供更好的用户体验和数据处理能力。
|
4月前
|
前端开发 API 开发者
GraphQL在复杂数据查询中的优势
【7月更文挑战第18天】GraphQL在复杂数据查询中展现出了显著的优势,包括精确获取所需数据、支持深度嵌套的关联数据、强大的类型系统、实时数据更新、单一端点和查询组合以及简化版本管理和前后端协作。这些优势使得GraphQL成为现代应用开发中不可或缺的一部分,特别是在构建高性能、高可维护性的Web应用时。随着技术的不断发展,GraphQL的应用前景将更加广阔。
|
6月前
|
数据库 UED 索引
构建高效的数据库索引:提升查询性能的关键技巧
本文将深入探讨数据库索引的设计和优化,介绍如何构建高效的数据库索引以提升查询性能。通过学习本文,读者将掌握数据库索引的原理、常见类型以及优化策略,从而在实际应用中提升数据库查询效率。
|
6月前
|
存储 SQL 缓存
构建高效的矢量数据库查询:查询语言与优化策略
【4月更文挑战第30天】本文探讨了构建高效矢量数据库查询的关键点,包括设计简洁、表达性强的查询语言,支持空间操作、函数及索引。查询优化策略涉及查询重写、索引优化、并行处理和缓存机制,以提升查询效率和准确性。这些方法对处理高维空间数据的应用至关重要,随着技术进步,矢量数据库查询系统将在更多领域得到应用。
|
6月前
|
缓存 数据库 UED
《优化数据库查询性能的五大技巧》
数据库查询性能直接影响着系统的响应速度和用户体验。本文将介绍五种优化数据库查询性能的技巧,涵盖了索引优化、查询语句优化、缓存机制、分区表和硬件优化等方面,帮助开发人员有效提升系统的性能和稳定性。
|
存储 缓存 JSON
大规模数据量下ES如何实现高性能检索?
大规模数据量下ES如何实现高性能检索?
631 0
|
SQL 消息中间件 JavaScript
比 MyBatis 效率快 100 倍的条件检索引擎,天生支持联表! 上
比 MyBatis 效率快 100 倍的条件检索引擎,天生支持联表! 上