在之前的工作中,我曾经遇到过表特别大的情况,这个时候我想到了使用with来降低查询的消耗,前文中已经有了描述:http://www.cnblogs.com/wingsless/archive/2012/01/15/2323060.html。今天我突然想到,其实用with和from (select)应该没有本质的差别。所以做了个小实验。
我的表大概7W行,使用with的SQL语句如下:
WITH A AS (SELECT T.OWNER,
T.OBJECT_NAME,
T.OBJECT_ID,
T.DATA_OBJECT_ID,
T.OBJECT_TYPE,
T.LAST_DDL_TIME,
T.EDITION_NAME,
T.NAMESPACE
FROM TEST1 T
WHERE T.OBJECT_NAME = 'I_USER1')
SELECT * FROM A;
SELECT *
FROM (SELECT T.OWNER,
T.OBJECT_NAME,
T.OBJECT_ID,
T.DATA_OBJECT_ID,
T.OBJECT_TYPE,
T.LAST_DDL_TIME,
T.EDITION_NAME,
T.NAMESPACE
FROM TEST1 T
WHERE T.OBJECT_NAME = 'I_USER1');
这个表的索引在OBJECT_NAME上。
这两个语句的执行计划:
可以看到两者的执行计划没有任何区别。也就是说,在表的数据量十分巨大的情况下,不管是使用with还是from (select ...)这种形式,可以通过选择需要的列来降低bytes,从而达到提高效率的目的,但是两者孰优孰劣,应该说是没有太大的区别的。
分享到:
相关推荐
通过以上的介绍和示例,我们可以看出`WITH...AS`在SQL查询中是非常实用的一个特性,不仅可以简化查询语句,还可以在某些场景下提升查询性能。熟练掌握并运用CTE可以帮助我们更好地管理和操作数据库中的数据。
CHAPTER 5 SELECT Statement: Common Elements . . . . . . . . . . . . 73 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.2 Literals and Their Data ...
标题中的“ORC_SELECT.rar_oracle_select orac”暗示了我们关注的是Oracle数据库中的查询操作,特别是关于SELECT语句的复杂使用。描述中提到的“多联合复杂的SQL语句,实现(+)=(+)的方法”是指Oracle SQL中的左...
6.1.9 Select a Test Case that Exposes the Runtime Bottleneck . . 68 6.1.10 The Difference Between Algorithm and Implementation . . 70 6.2 Using Profiling Tools . . . . . . . . . . . . 72 6.2.1 Do Not ...
SELECT * FROM Table1 WHERE Name LIKE 'abc%' ), CTE2 AS ( SELECT * FROM Table2 WHERE ID > 20 ), CTE3 AS ( SELECT * FROM Table3 WHERE Price ) SELECT A.*, B.*, C.* FROM CTE1 A, CTE2 B, CTE3 C WHERE A...
在数据库管理与操作中,`SELECT INTO`与`INSERT INTO SELECT FROM`是两种常见的用于复制或创建新表的方式。这两种语句虽然相似,但在实际使用场景中有着不同的作用和限制条件。 #### 1. `SELECT INTO` `SELECT ...
Action 2: Select the Step Type ...................................................................................3-4 Step Types...........................................................................
Details -Event filter with query “SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA “Win32_Processor” AND TargetInstance.LoadPercentage > 99″ could not be reactivated in...
使用 START WITH 和 CONNECT BY 子句,可以 select 数据具有层次关系的数据,通常是一些父子关系、老板员工关系或东西零件关系。此外, START WITH 和 CONNECT BY 子句也被用于解释 SQL 执行计划的语法规则是: ```...
3.9 Interaction with other languages...............................................................................43 3.9.1. Interacting with C ..........................................................
《MDX Solutions with Microsoft SQL Server Analysis Services 2005》不仅是一本深入探讨MDX语言及其在SSAS中的应用的书籍,还扩展了对其他OLAP平台(如Essbase)的讨论。通过学习本书,读者可以掌握如何利用MDX...
当我们需要进行多步骤的查询,或者需要对数据进行分组和比较时,CTE就显得尤为有用。例如,如果我们需要找出学历为硕士或博士,且工资低于同学历、同年入职员工平均工资的员工,可以这样做: ```sql WITH ...
Microsoft® Excel® 2013: Working with Data Ranges and Tables is a two-lesson intermediate level course that guides you through organizing, entering and validating worksheet data and then effectively ...
- `SELECT` 子句列出了需要查询的字段:`p.pname` 表示产品名称,`c1_sum1` 和 `c2_sum2` 分别表示基于`s1` 和 `s2` 表中数据的聚合结果。 - `FROM` 子句首先引用了主表 `p`,然后是两个内联视图:一个计算了 `s1` ...
and all other areas with abundance of data. The interest in this field by companies, universities, governments, and research organizations has accelerated the advances in the field. This book covers ...
10.2.5. Using profiles to select a data source 10.3. Using JDBC with Spring 10.3.1. Tackling runaway JDBC code 10.3.2. Working with JDBC templates 10.4. Summary Chapter 11. Persisting data with object...
MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and...
Table of Contents Preface, Notes, Licenses . . . . . . . . ....1. Licenses for Third-Party Components ....1.1. FindGTest.cmake License ....1.2. LPeg Library License ....1.3. LuaFileSystem Library License ....