`
bianxq
  • 浏览: 94585 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

查询--驱动表

阅读更多

查询中何为驱动表阿??请问这句话怎么理解啊?

楼主goldtogo(jinhao)2002-12-06 09:36:27 在 Oracle / 基础和管理 提问

3.1   SQL语句的优化  
    SQL语句的执行速度,可以受很多因素的影响而变化。但主要的影响因素是:驱动表、执行操作的先后顺序和索引的运用。可以由很多不同的方法间接地改变这些因素,以达到最优的执行速度。这里主要探讨当对多个表进行连接查询时应遵循的优化原则:  
    (1)   用于连接的子句的列应被索引、在Where子句中应尽量利用索引,而不是避开索引。  
    (2)   连接操作应从返回较少行上驱动。  
    (3)   如果所连接的表A和B,A表长度远远大于B表,建议从较大的A表上驱动。  
    (4)   如果Where子句中含有选择性条件,Where   No=20,将最具有选择性部分放在表达式最后。  
    (5)   如果只有一个表有索引,另一表无索引,无索引的表通常作为驱动表。如A表的No列以被索引,而B表的No   列没被索引,则应当B表作为驱动表,A表作为被驱动表。  
    (6)   若用于连接的列和Where子句中其他选择条件列均有索引,则按各个索引对查询的有效性和选择性分别定出级别,结合表中具体数据构成情况,从中选出优化路径,一般需要考虑:子句中哪些列可以使用索引、哪些索引具有唯一性及被查询表行数目等。  
   
   
   
   
  问题:1、何谓驱动表?(怎么判断哪个表当驱动表)  
              2、如果所连接的表A和B,A表长度远远大于B表,建议从较大的A表上驱动  
                    这句话怎么理解呀?  
              3、连接操作应从返回较少行上驱动  
                    这句话该怎么理解呀?能举个例子么?  
  问题点数:20、回复次数:6Top

1 楼jlandzpa(jlandzpa)回复于 2002-12-06 11:15:47 得分 6

以下是三千兄的解释:  
  驱动表是sql执行路径中用来最先查询的表,比如本例中第一句sql用explain   plan来看  
  执行路径的化,应该是先搜索D表,然后根据D表中记录和WHERE条件去搜索别的表,  
  那样就需要搜索30万次(如果WHERE条件中没有对D的确定值限制)。而第二句SQL就会以  
  A表作为驱动,那样搜索的次数就大大减小了。但是这种情况只有在采用的RULE-BASED  
  优化器或者采用了COST-BASED优化器而相关表没有STATISTICS的时候才会出现的。  
   
  如果采用了COST-BASED优化器而且对所有的表都进行了分析的话,ORACLE就能自动根据COST  
  值来确定优化路径,那样表的顺序就不是很有关了。所以定期地对大的、更新频繁的表作分  
  析是非常重要的。  
  Top

2 楼biti_rainy(biti_rainy)回复于 2002-12-06 18:09:06 得分 8

rule   模式下的规则:  
   
  有两个索引存在的情况下,from后面大表在前  
   
  有一个索引,则顺序无关  
   
  都没有索引,则大表应该在后(这个效率我几次测试相差有60%)  
  Top

3 楼KingSunSha(弱水三千)回复于 2002-12-06 20:18:17 得分 6

biti_rainy(biti_rainy):  
  现在恐怕没多少系统是用rule-based作为默认优化器的,但是实际中用户不注意对表的分析,系统被迫采用rule-based的例子倒是非常常见。  
  老兄在哪里高就?我最近一个项目很大,所以很忙,有空多交流。Top

4 楼jiezhi(风满袖)回复于 2002-12-06 22:53:21 得分 0

向高手们学习。Top

5 楼biti_rainy(biti_rainy)回复于 2002-12-08 13:44:05 得分 0

KingSunSha(弱水三千)  
   
  不知道老兄去瑞典没有   :)  
  给你发了个pmTop

6 楼KingSunSha(弱水三千)回复于 2002-12-09 04:53:30 得分 0

biti_rainy(biti_rainy):  
  我一家移居瑞典三个多月,基本上安顿下来了。这边的项目不错,我很感兴趣,做得挺开心的。  
  不过,我现在用公司的内部网通过proxy上internet,所以上不了msn   :(   等明年二月我搬到自己的公寓就能用宽带直接上网了。到时候再聊。

分享到:
评论

相关推荐

    mysql-qt开发驱动

    此外,QSqlTableModel和QSqlQueryModel等类还允许开发者将数据库表直接集成到Qt的数据模型中,进而方便地与Qt的视图组件如QTableView进行交互。 在安全性方面,mysql-qt驱动也提供了丰富的支持。开发者可以利用Qt...

    hive-jdbc-uber-2.6.5.0-292.jar驱动

    1. **图形界面操作**:用户可以通过Dbeaver的GUI创建、修改和删除Hive表,执行SQL查询,并查看结果集。 2. **数据库对象浏览**:显示Hive中的数据库、表、视图等,便于管理和操作。 3. **数据导入导出**:支持将数据...

    达梦-神通-南大通用-优炫-瀚高-KingBase jdbc驱动.zip

    其JDBC驱动使得Java开发者能够方便地连接和操作达梦数据库,进行数据查询、更新和管理。 2. **神通数据库(Supernova)**:神通数据库是一款拥有自主知识产权的大型通用关系型数据库管理系统,适用于高并发、大数据量...

    mysql-connector-java-5.0.7 jdbc 驱动

    这个驱动程序使得Java开发者能够使用Java Database Connectivity (JDBC) API来连接和操作MySQL数据库,从而实现数据的存取、查询以及更新等功能。在Java应用中,JDBC驱动扮演着至关重要的角色,它提供了标准接口,...

    自动化测试摸索-高级数据驱动测试

    ### 高级数据驱动测试(ADDT):深入解析与应用 #### 一、引言 随着软件开发的复杂度不断提高,确保软件质量成为了一项挑战。自动化测试作为一种有效手段,能够显著提升测试效率和软件质量。其中,高级数据驱动...

    phoenix-5.0.0-HBase-2.0-client

    它将HBase的数据模型转换为传统的SQL表,并通过编译SQL查询为HBase的原生操作,提高了查询性能。Phoenix使用Java存根(stub)和服务器端的元数据服务来处理SQL到HBase的映射,从而减轻了客户端的负担。 在Squirrel ...

    hive-jdbc-1.1.0驱动相关jar包

    3. 数据操作:插入、更新、删除和查询Hive表中的数据。 4. 元数据访问:获取关于Hive数据库的结构信息,如表名、列名等。 5. 高级特性:支持事务、批处理、预编译语句等功能。 在动态加载Hive JDBC 1.1.0驱动时,...

    mysql-connector-java-5.1.18驱动下载

    此驱动使得Java开发者能够通过JDBC API连接到MySQL服务器,执行SQL查询、事务处理、数据插入和更新等操作。JDBC是Java平台中用于与各种数据库交互的一组接口和类,它提供了一种标准化的方式来访问不同类型的数据库,...

    ORACLE数据库SQL优化---表连接类型.docx

    驱动表的数据首先被处理,而被驱动表的数据根据驱动表的结果进行匹配。此外,当有多个表时,优化器还需决定表与表之间的连接顺序,以达到最佳性能。 2. 表连接方法: Oracle支持四种主要的表连接方法: - 排序合并...

    DBeaver链接hive驱动包下载: hive-jdbc-uber-2.6.5.0-292.jar

    你可以通过双击数据库查看其中的表,甚至创建新的表。 2. SQL查询:在SQL编辑器中,你可以编写HQL(Hive Query Language)语句执行查询、插入、更新和删除等操作。DBeaver会自动高亮语法,并提供代码补全功能,提高...

    mysql-oracle-sql-jdbc驱动

    通过这个驱动,开发者可以使用Java编写SQL语句,执行数据库查询和操作,而无需了解底层通信细节。 接下来是Oracle数据库,它是全球最大的商业数据库解决方案之一,广泛应用于大型企业和关键业务系统。Oracle的JDBC...

    张逸-构建领域驱动设计知识体系_compressed.pdf

    - **里程碑之二**:随着领域事件(Domain Event)、命令查询职责分离(CQRS)、事件溯源(Event Sourcing)等技术的引入和发展,领域驱动设计的建模方式经历了从以“对象”为中心到以“事件”为中心再到以“函数”为中心的...

    EMC-VNX2产品兼容表-PN码查询docu42949.pdf

    EMC-VNX2产品兼容表-PN码查询是EMC公司提供的一份产品兼容性文档,旨在帮助用户快速查找和确定VNX系列存储设备的驱动器兼容性信息。该文档涵盖了VNX、VNXe、VNX2e、CLARiiON和Celerra等存储设备的驱动器兼容性信息,...

    JAVA-JDBC连接数据库(查询-添加-修改-删除).doc

    ### JAVA-JDBC连接数据库(查询-添加-修改-删除) #### 一、JDBC基础知识 JDBC(Java Database Connectivity)是Java中用来对关系数据库进行访问的一种标准API,它为数据库开发人员提供了一种标准的方式来访问数据库...

    数据库工具-dbeaver-内网驱动安装包

    【hive】是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL类查询接口进行数据查询。Hive不支持实时查询,而是用于离线批处理,适合大数据分析场景。在dbeaver中配置了Hive驱动后,...

    表驱动 词法分析cminus

    - 在循环中,根据当前状态`state`和输入字符`ch`查询转换表`T`,得到新的状态`newstate:=T[state,ch]`。 - 如果当前状态和输入字符对应的状态转换需要移动到下一个字符,则执行`ch:=nextinputchar`。 - 更新当前...

    hive2.1.1 + hadoop2.6.0jdbc驱动

    2. **hive-metastore-2.1.1.jar**:包含了Hive元数据存储服务的实现,负责管理表、分区等元数据。 3. **hadoop-common-2.6.0-cdh5.5.2.jar**:Hadoop的公共库,提供了Hadoop集群的基本功能,如文件系统操作和支持...

    sqlite-jdbc 驱动包

    SQLite JDBC驱动使得Java应用程序能够通过标准的JDBC接口与SQLite数据库进行交互,从而在Java应用中轻松实现数据存储和查询。 使用sqlite-jdbc-3.5.7.jar这个驱动包,开发者可以遵循以下步骤来建立与SQLite数据库的...

    phoenix-hbase-2.2-5.1.2-bin.tar.gz

    Phoenix是建立在HBase之上的SQL查询引擎,它为HBase提供了高性能的JDBC驱动,使得开发人员可以通过SQL接口来操作HBase,而无需掌握复杂的HBase API。Phoenix通过解析SQL语句,将其转换为HBase的扫描和过滤操作,从而...

Global site tag (gtag.js) - Google Analytics