`
tof.j
  • 浏览: 135444 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类

SQL查询效率-100w数据查询只要1秒

阅读更多

关于SQL查询效率,100w数据,查询只要1秒,与您分享:

机器情况
p4: 2.4
内存: 1 G
os: windows 2003
数据库: ms sql server 2000
目的: 查询性能测试,比较两种查询的性能

SQL查询效率 step by step

-- setp 1.
-- 建表
create table t_userinfo
(
userid int identity(1,1) primary key nonclustered,
nick varchar(50) not null default '',
classid int not null default 0,
writetime datetime not null default getdate()
)
go

-- 建索引
create clustered index ix_userinfo_classid on t_userinfo(classid)
go

-- step 2.

declare @i int
declare @k int
declare @nick varchar(10)
set @i = 1
while @i<1000000
begin
  set @k = @i % 10
  set @nick = convert(varchar,@i)
  insert into t_userinfo(nick,classid,writetime) values(@nick,@k,getdate())
  set @i = @i + 1
end
--  耗时 08:27 ,需要耐心等待

-- step 3.
select top 20 userid,nick,classid,writetime from t_userinfo
where userid not in
(
select top 900000 userid from t_userinfo order by userid asc
)

-- 耗时 8 秒 ,够长的

-- step 4.
select a.userid,b.nick,b.classid,b.writetime from
(
select top 20 a.userid from
(
select top 900020 userid from t_userinfo order by userid asc
) a order by a.userid desc
) a inner join t_userinfo b on a.userid = b.userid
order by a.userid asc

-- 耗时 1 秒,太快了吧,不可以思议

-- step 5 where 查询
select top 20 userid,nick,classid,writetime from t_userinfo
where classid = 1 and userid not in
(
select top 90000 userid from t_userinfo
where classid = 1
order by userid asc
)
-- 耗时 2 秒

-- step 6 where 查询
select a.userid,b.nick,b.classid,b.writetime from
(
select top 20 a.userid from
(
select top 90000 userid from t_userinfo
where classid = 1
order by userid asc
) a order by a.userid desc
) a inner join t_userinfo b on a.userid = b.userid
order by a.userid asc

-- 查询分析器显示不到 1 秒.


查询效率分析:
子查询为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。在这种情况下可以考虑用联接查询来取代。
如果要用子查询,那就用EXISTS替代IN、用NOT EXISTS替代NOT IN。因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高。无论在哪种情况下,NOT IN都是最低效的。因为它对子查询中的表执行了一个全表遍历。

建立合理的索引,避免扫描多余数据,避免表扫描!
几百万条数据,照样几十毫秒完成查询.

评论

相关推荐

    SQL查询效率:100w数据查询只需要1秒钟

    ### SQL查询效率提升技巧:如何实现100万数据秒级查询 在处理大量数据时,提高查询效率是至关重要的。本文将通过一系列步骤展示如何优化SQL查询性能,以达到即使是100万条记录也能在一秒钟内完成查询的目标。 ####...

    SQL - 100w条insert脚本 - 顺序乱序.zip

    在SQL数据库管理中,"100w条insert脚本"指的是用于一次性或者批量插入100万个数据记录的SQL语句集合。这样的脚本通常用于数据填充、测试环境搭建或者大数据导入等场景。批量插入可以显著提高数据录入的效率,尤其是...

    100万条数据导入SQL数据库仅用4秒

    本文将深入探讨如何使用C#语言实现100万条数据快速导入SQL Server数据库,仅需4秒的惊人速度。这个成就得益于一系列优化策略和技术手段的综合运用。 首先,我们需要理解SQL Server数据库的批量插入机制。在SQL ...

    SQLServer数据库分页查询

    ### SQL Server 数据库分页查询方法详解 #### 一、背景与问题定义 ...例如,如果表中的数据量非常大,或者频繁进行分页查询操作,则可能需要考虑更复杂的查询优化策略或采用存储过程等高级特性来提高效率。

    提高SQL处理查询上百万条数据库的速度

    13. 并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL 查询可能不会去利用索引。 索引并不总是对查询有效,应该根据实际情况选择合适的索引,以提高查询速度。 14...

    mysql测试库(100万数据库和世界人口数据库).rar

    这个数据库可能设计为单一的大表,每行代表一条数据,用于测试在大量数据下的SQL查询性能、索引效率以及数据库的扩展性。这种大规模的数据集有助于模拟实际生产环境中的高并发访问和大数据处理场景,对于理解和优化...

    Oracle中如何用一条SQL快速生成10万条测试数据

    在Oracle数据库管理中,生成大量测试数据是进行性能测试、数据建模以及验证查询效率等场景下不可或缺的一环。本文将深入探讨如何利用一条SQL语句在Oracle中快速生成10万条测试数据,这对于数据库管理员和开发人员来...

    SQL Server数据库查询优化方法探究

    1. **合理使用索引**:索引可以显著提高查询效率。创建索引后,可以通过索引来快速查找数据,而不是逐行扫描。然而,索引的创建和维护会增加数据库的时间和空间开销。因此,索引的使用需要遵循一些基本原则: - ...

    mysql百万级测试数据下载 300W条

    9. **性能监控**:通过监控数据库性能指标,如QPS(每秒查询次数)、TPS(每秒事务处理量)等,可以了解系统在高负载下的运行状况。 10. **安全测试**:测试权限控制、审计日志等功能,确保在大量数据情况下,信息...

    Sybase_IQ_SQL开发指南_v1.1.pdf

    - **选择合适的SQL方言**:根据具体的应用需求和查询复杂度来选择使用T-SQL还是W-SQL。 - **理解数据存储方式**:Sybase IQ 采用了独特的列式存储技术,因此在编写SQL时应充分考虑这一点。 - **性能调优**:利用索引...

    100w条超市商品条码数据(SQL格式)

    本资源“100w条超市商品条码数据(SQL格式)”提供了一个包含商品信息的大型数据库,这对于我们理解商品数据的管理和分析具有极大的价值。 首先,让我们详细了解SQL。SQL是一种标准化的语言,用于查询、更新和操作...

    MySQL30W测试数据

    分析30W数据的查询模式,创建合适的索引,如主键索引、唯一索引、复合索引等,可以显著提升查询效率。 5. **备份与恢复**:测试数据也能用于验证备份和恢复机制的有效性。可以测试全量备份、增量备份以及在数据丢失...

    四元 測試sql 測試sql

    - **性能测试**:评估SQL查询在大规模数据集上的执行效率。 - **安全性测试**:确保SQL查询不会引发安全漏洞。 ### SQL测试的重要性 #### 1. 数据准确性 通过SQL测试可以确保数据查询结果准确无误,这对于依赖于...

    ORACLE中SQL查询语句的优化.pdf

    在优化过程中,我们需要考虑多种因素,例如查询效率、数据量、系统资源等。 五、结论 ORACLE中SQL查询语句的优化是数据库应用设计中的一项重要技术,它可以提高查询效率和性能。在实际应用中,我们需要选择合适的...

    SQLServer常用字段类型

    在数据库设计与管理中,选择合适的字段类型对于数据的存储效率、查询性能以及数据完整性至关重要。SQL Server 提供了丰富的数据类型,覆盖了从基本数值到复杂文本、图像等各类数据的存储需求。下面将详细解析《SQL ...

    真正高效的SQLSERVER分页查询(多种方案)

    这种方法的平均查询时间是45秒,对于大量数据来说,效率显然不高。 第二种方案采用了嵌套的`TOP`和`ORDER BY`,先获取45030条数据,再内部排序后取前30条,最后外部排序。这种方法的平均查询时间是138秒,比第一种...

    AIS Data.rar_AIS-DATA_ais数据_ais数据下载_earm1g_surface2tv

    标题"AIS Data.rar_AIS-DATA_ais数据_ais数据下载_earm1g_surface2tv"中的关键词主要涉及到AIS(Automatic Identification System)数据,这是一项用于船舶自动识别和跟踪的技术。AIS数据通常包括船舶的位置、速度、...

    SQL和数据访问层时间格式处理

    在IT领域,尤其是在...SQL的日期函数方便了对数据库中的日期数据进行操作,而.NET的日期格式化功能则让开发者能够灵活地在用户界面中展示日期和时间。理解并熟练运用这些功能,能够提升应用程序的效率和用户体验。

Global site tag (gtag.js) - Google Analytics