Csdn2010
优秀博文中有一篇数据库方面的文章很好(用csdn的站内搜索也没有找到,幸好这篇博文地址保持起来了),
http://blog.csdn.net/yzsind/archive/2010/12/06/6059209.aspx
,这几天会做一些数据库的操作,记录下操作步骤。以下操作只是在考虑怎么能尽快的把数据取出来,是特定环境下的。以下操作会涉及索引,标量子查询,分区几个方面。
数据库为之前系统的为
sqlserver
。此次操作涉及到表有
mobile
(
218
条数据,
9
列)
,service(149
条数据,
12
列
)
,
channel(42
条数据,
12
列
)
,
Spinfo(21
条数据,
8
列
)
,
service_log
(
service
,
mobile
,
url
,
access_date
,
ip
共
5
字段,约
4
千万条数据,按月大概有
500
多万条数据)。
目标是需要统计
service_log
,按照月进行统计分析汇总。并且其他表中取出关联数据。导出了建表语句放在附件中。
用
select count(*) from service_log
发现很慢,需要接近
20
分钟以上。那么任何类似的
sql:select …… from table1,table2…… where ……
,就不用写了。
建立索引,对时间建立索引,建完有性能有了很大提升,差不多要
1
分钟。做关联之前毫无疑问,我们需要以时间段缩小数据量,
select … from service_log where access_date between
'2010-05-01'
and
'2010-05-30'
.
对于关联,首先试用了标量子查询,得到的结论是,标量子查询无法使性能得到改善(至少
sqlserver2005
是这样的)。这里将使用标量子查询和没有使用标量子查询的
2
段
sql
贴出来,不过使用标量子的
sql
可读性会好些。
没有使用标量子查询的sql: Select m.name,s.name,s.url,sp.name ,num.n from dbo.service s,dbo.service_log sl,(select count(*) as n ,sl.service as id from dbo.service_log sl where sl.access_date between '2011-02-01' and '2011-03-01' group by sl.mobile,sl.service) num, (select sp.id ,sp.name from dbo.spinfo sp) as sp, mobile m where sl.service=s.id and s.id = num.id and s.sp = sp.id and m.did=sl.mobile
使用标量子查询的sql: select (select name from dbo.mobile m where m.did=sl.mobile) as mobile, sl.service,s.name ,s.url, (select c.name from dbo.channel c where c.id = s.channel) as c, (select sp.name from dbo.spinfo sp where s.sp = sp.id) as sp, sl.num from dbo.service as s, (select sl.service ,sl.mobile as mobile,count(*) as num from dbo.service_log sl where sl.access_date between '2011-02-01' and '2011-03-01' group by sl.mobile,sl.service WITH CUBE) as sl where s.id = sl.service
对于索引而言,分为聚集索引和非聚集索引。这
2
个差别,以字典按照拼音和偏旁来作解释比较好理解(详细见上面连接中的解释)。读了这个后,应该会对聚集索引和非聚集索引有一个了解
.
显然对于此处时间来讲,聚集索引和非聚集索引而言,该处建立聚集索引会使查询快些。
变为聚集索引后,可以发现上面的
sql
的查询,有
1
分钟变为
2
秒了。
服务器上约
4000
万数据接近
2
秒,在本地数据库中有部分数据,大概有
1000
万条数据,用时不到一秒。更进一步的优化,可以用到表的分区,对于
sqlserver
表的分区操作。这有几篇篇博客写的很详细,
http://blog.csdn.net/Sky_666/category/522973.aspx
。其中也讲到,对于已有数据库,可以对聚集索引进行表分区。
同时可以结合缓存进行优化,之前做个一个项目进行过尝试。将所有基础表全部缓存,涉及到关联的操作,直接调用缓存的数据,不做表关联。大部分数据库操作只是针对一个表,这样所带来的是代码量会增大,可以借助ehcache
来处理这方面的工作。不过实际运用之中还是要依据情况来选择处理方式,这种几千万条数据的操作,直接用sql来操作就可以了。
分享到:
相关推荐
SQL Server数据库查看器是一款专为SQL Server设计的强大而便捷的数据库管理工具,它提供了一种直观的方式来浏览、管理和操作数据库中的数据。对于SQL Server初学者和经验丰富的DBA(数据库管理员)来说,这款软件都...
2.1.2 统计SQLServer数据中的对象以及表数据量 2 2.2 准备移植环境 3 2.2.1 DM移植环境 4 2.2.2 SqlServer移植环境 5 2.3 常规对象及数据迁移 6 2.3.1 指定迁移计划 6 2.3.2 表对象迁移 6 2.3.3 视图对象迁移 9 ...
总之,这个"最新全国行政区划编码 sqlserver 数据表"是一个非常实用的资源,对于开发和维护涉及地理位置信息的系统来说,它能够提供基础性的支持,简化地理数据的管理和使用。在使用时,需注意数据的时效性,确保...
SQLServer数据查询的优化是一个涉及多方面技术的工作。通过对查询语句、索引以及表结构等方面进行细致的调整,可以有效地提高查询效率,进而提升整个应用程序的性能。需要注意的是,不同的应用场景可能需要采取不同...
SQL Server 是一个功能强大且广泛使用的关系数据库管理系统,通过它可以对数据进行高效的存储、管理和查询。在实际应用中,我们经常需要对数据进行累计计算,例如银行账户余额的计算。本文将介绍使用 SQL Server ...
在SQL Server中,过滤数据是数据分析的关键步骤,尤其在处理关系型数据库时。规范化是数据库设计的基本原则,目的是减少数据冗余,确保数据的一致性和完整性。规范化要求数据以键值关联的方式存在于不同表中,避免了...
《SQL Server 2000数据挖掘技术指南》是一本深度探讨如何在SQL Server 2000环境下进行数据挖掘的教程。数据挖掘是利用算法和统计方法从大量数据中发现模式、趋势和关联的过程,它对于商业智能、预测分析以及决策支持...
《SQLServer7指南(下)》是一份专为SQL Server 7.0用户设计的详尽教程,旨在帮助用户深入理解和掌握这一版本的数据库管理系统。SQL Server 7.0是微软发布的一个重要的数据库产品,虽然现在已经较为老旧,但对于理解...
SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在20世纪末至21世纪初广泛应用于企业级数据管理。本压缩包文件"sql server 2000 试题汇编答案"显然是针对SQL Server 2000的练习题集及解答,旨在帮助...
聚合函数如`SUM`、`AVG`、`COUNT`、`MIN`和`MAX`用于对一组数据进行统计分析。在SQL Server中,可以使用`GROUP BY`语句结合聚合函数对数据进行分组计算,实现数据汇总。 5. **数据导入导出** SQL Server提供了`...
在SQL Server 2008中实现递归查询来获取所有上级或下级数据是一项非常实用的技术,尤其是在处理具有层次结构的数据时。本篇将详细解释如何利用Common Table Expressions (CTE)来完成这样的查询,并对提供的示例代码...
1. **存储引擎**:SQL Server 2008的存储引擎是其核心部分,负责数据的管理和访问。书中详细讨论了页和分配结构(如B树索引)、事务处理、锁与行版本控制、内存管理以及查询执行计划的生成。 2. **查询优化器**:...
总之,省市县三级数据在SQL Server中的管理和使用涉及到数据库设计、查询优化、数据安全等多个方面,是业务系统中不可或缺的一部分,尤其在涉及地理位置、人口统计等领域的应用中起到关键作用。通过高效地管理和利用...
这个"SQLServer2008Client绿色纯净版"是一个便携式的安装包,无需复杂安装过程,解压后即可直接运行。 ### 1. SQL Server Management Studio (SSMS) SQL Server Management Studio是SQL Server 2008客户端的核心...
1. **SQL Server架构**:了解SQL Server的核心组件,如数据库引擎、Analysis Services、Integration Services、Reporting Services等,以及它们在数据处理中的作用。 2. **安装与配置**:包括SQL Server的安装步骤...
在本压缩包中,"SQL Server数据"可能包含了一系列与SQL Server相关的数据库文件、备份文件、脚本或者配置信息。 首先,我们要理解SQL Server的核心概念。SQL(Structured Query Language)是用于管理关系数据库的...
SQL Server Profiler 是一个强大的工具,用于监测 SQL Server 数据库的性能和行为。它允许管理员实时查看和记录数据库发生的各种事件,例如查询执行、锁定、错误等,从而帮助诊断性能问题和异常。以下是对 SQL ...
SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在IT领域中扮演着重要的角色,尤其是在数据存储、管理和分析方面。本题目汇编聚焦于SQL Server 2000的基础知识,旨在帮助学习者巩固和提升对这个系统的...