sql2000中的连接两个表的查询语句的执行路径对性能的影响
有两个表
表1 pay_itemdetail 大概 2-3百万条数据
表2 pay_builddetail 大概 55 条数据
1原语句,效率非常低,用时20秒以上
select * from pay_itemdetail with(nolock)
where builditemid in (select id from pay_builddetail where buildid = 1)
2 改进的语句求count ,又两种方法,连接,用时1秒中
1)in 的方式
select count(1) from pay_itemdetail with(nolock)
where builditemid in (select id from pay_builddetail where buildid = 1)
2)连接的方式
select count(1) from pay_itemdetail a with(nolock),pay_builddetail b with(nolock)
where b.buildid=100 and a.builditemid = b.id
3 最后的改进 top ,用时0秒
select top 1 a.* from pay_itemdetail a with(nolock),pay_builddetail b with(nolock)
where b.buildid=1 and a.builditemid =b.id
4 求top时如果没有记录匹配,速度很慢,用时10秒
select top 1 a.* from pay_itemdetail a with(nolock),pay_builddetail b with(nolock)
where b.buildid=100 and a.builditemid =b.id
5. 对4进行进一步分析祥解
用
select top 1 a.* from pay_itemdetail a with(nolock),pay_builddetail b with(nolock)
where b.buildid=1 and a.builditemid =b.id
来取第一条符合条件的 pay_itemdetail 中的数据,当 b.buildid=1 条件成立时,执行时间只用0秒;
分享到:
相关推荐
在SQL Server 2000中,连接两个表的查询语句是数据库操作中的常见操作,对于性能的影响至关重要。查询优化是数据库管理的核心任务之一,它涉及到如何有效地执行SQL语句,以达到最快的响应时间和最小的系统资源消耗。...
执行计划包含了如何执行查询的具体步骤,如表扫描、索引查找、联接操作等。 #### 四、SQL Server 2005中的新逻辑处理阶段 SQL Server 2005引入了一些新的逻辑处理阶段,以支持更多复杂的查询需求: - **并行查询...
在SQL(Structured Query Language)中,连接查询(JOIN)是用于合并两个或更多表中的数据的关键技术。当数据分布在多个表中时,通过连接查询可以获取到跨表的关联信息。 一、SQL连接查询类型: 1. 内连接(INNER ...
sqljdbc.jar包含了实现这些接口的具体类,使得Java程序员能够通过编写SQL语句与SQL Server 2000进行交互,执行查询、事务处理、存储过程等功能。 msbase.jar和msutil.jar是辅助性库文件,主要包含了一些特定于SQL ...
- 这条语句首先执行内部查询,即从表`a`中选择`a`、`b`、`c`列的数据,然后将结果作为外部查询的一个临时表,再基于这个临时表执行过滤操作。 **应用场景**: - 当需要先执行一次查询来获取中间结果,然后再对中间...
在这段SQL代码中,主要关注的是如何找出那些执行时间长且对系统资源消耗大的查询语句。 #### 1.1 SQL Server DMV (Dynamic Management Views) 的使用 - **sys.dm_exec_query_stats**:这是一个非常重要的动态管理...
执行路径:ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计比多表统计的速度完全是两个概念.单表统计可能只要0.02秒,但是2张表联合统计就可能要几十表了. 这是因为ORACLE只对...
根据提供的信息,我们可以总结出以下Oracle数据库中常用的SQL查询语句及它们的功能: ### 1. 查询表空间及其总大小 ...以上查询涵盖了Oracle数据库管理中常用的一些SQL语句,对于日常维护和性能调优非常有帮助。
在SQL Server 2000中,有聚集索引和非聚集索引两种类型。聚集索引决定了表中数据的物理顺序,而非聚集索引则包含指向数据行的指针。选择哪些列创建索引,以及索引的基数和宽度,都需要根据实际查询模式来精心设计。 ...
6. **连接操作**: JOIN语句用于合并两个或多个表的数据,包括INNER JOIN(匹配记录)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)、FULL JOIN(全连接)。 7. **子查询**: 子查询是在一个查询语句中嵌套另一个查询...
此外,MySQL还包含其他组件,如连接管理、线程池、用户授权、查询缓存、命令解析器、预处理器、查询优化器、访问控制、表管理、日志记录等,这些组件协同工作,确保SQL语句的有效执行。 接下来,我们详细讨论查询...
在查询优化中,Row Source指的是由上一步操作返回的满足条件的行集合,它可以是整个表、部分表或两个Row Source连接后的结果。Predicate则是指查询中的WHERE子句,用于筛选行。Driving Table(驱动表)和Probed ...
7. **选择连接顺序**:在多表连接中,确定先连接哪两个表以及将哪个表作为源数据表,这对于优化性能至关重要。 8. **选择数据搜索路径**:根据上述条件,数据库会选择最有效的数据搜索路径,可能包括全表扫描、索引...
这个连接包,通常被称为JDBC驱动程序,是Java Database Connectivity (JDBC) API的一部分,允许Java开发者编写能够访问、查询和操作SQL Server 2000数据库的代码。在Java中,JDBC驱动程序分为四种类型,从Type 1到...
在多表查询中,不同的连接策略对查询性能的影响也非常显著。Informix支持两种主要的连接方法: 1. **嵌套循环连接(Nested Loop Join)**: 这是最简单的连接方式,它首先遍历第一个表中的每一行,然后对于第一...
两个语句所指的对象必须完全相同。 C. 两个 SQL 语句中必须使用相同的名字的绑定变量(bind variables)。 三、选择最有效率的表名顺序 ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名,因此 FROM ...
在SQL Server中,DML触发器的实现使用两个逻辑表DELETED和INSERTED。这两个表建立在数据库服务器的内存中,只有只读权限,其结构与触发器所在数据表结构相同。 2. T-SQL语法:SQL Server数据库采用的语言格式为T-...