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

列定义是否为空对COUNT(*)操作索引选择的影响

阅读更多

 

SQL> desc test;
 Name        Null?    Type
 ----------------------------------------- -------- ----------------------------
 OBJECT_NAME         VARCHAR2(128)
 OBJECT_ID         NUMBER

=====================================

SQL> select count(*) from test;


Execution Plan
----------------------------------------------------------
Plan hash value: 1950795681

-------------------------------------------------------------------
| Id  | Operation    | Name | Rows  | Cost (%CPU)| Time   |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |   | 1 | 5   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE    |   | 1 |        |   |
|   2 |   TABLE ACCESS FULL| TEST |  2305 | 5   (0)| 00:00:01 |
-------------------------------------------------------------------

 

=========SQL> alter table test modify(object_id not null);

Table altered.

SQL> desc test;
 Name        Null?    Type
 ----------------------------------------- -------- ----------------------------
 OBJECT_NAME         VARCHAR2(128)
 OBJECT_ID       NOT NULL NUMBER

SQL> select count(*) from test;

  COUNT(*)
----------
      2305


Execution Plan
----------------------------------------------------------
Plan hash value: 911472365

----------------------------------------------------------------------------
| Id  | Operation       | Name    | Rows  | Cost (%CPU)| Time    |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |     |  1 |  3   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE       |     |  1 |  |    |
|   2 |   INDEX FAST FULL SCAN| INX_OBJ_ID |  2305 |  3   (0)| 00:00:01 |
----------------------------------------------------------------------------
===================================================

 

分享到:
评论

相关推荐

    mysql数据库以及索引详解.pptx

    - **组合索引**:基于多个列构建的索引,所有列值均不能为空。 ##### B-Tree索引 - **定义**:B-Tree是一种平衡的多路搜索树,通常用于实现数据库索引。 - **特性**: - 每个节点最多拥有m个子树。 - 根节点最少...

    SQL学习教程-约束,索引,视图,函数

    1. **非空约束 (NOT NULL)**:不允许字段值为空。 2. **唯一约束 (UNIQUE)**:确保字段中的每个值都是唯一的。 3. **主键约束 (PRIMARY KEY)**:标识表中的唯一记录,通常与自动递增的整数结合使用。 4. **外键约束 ...

    Sql Server 数据库视图 索引等

    保证索引列中的值是唯一的。 - **聚集索引:** 数据按照索引顺序存储,每个表最多只能有一个聚集索引。 - **非聚集索引:** 存储索引项的物理顺序与表中记录的物理顺序无关。 **创建索引示例:** ```sql -- 创建...

    SQLServer索引设计经验谈

    通过对聚集索引与非聚集索引的选择、索引列的排序方式、填充因子的设定以及避免不当的索引设计等方面进行详细的讲解,为读者提供一套实用的索引设计指南,从而帮助提升系统的整体性能。 #### 关键词 - 索引 - 聚集...

    VS2008中MSChart图表控件详细介绍

    **定义:** 是否允许用户选择图表中的特定元素。 **用途:** 允许用户交互式地选择图表中的数据点或其他元素,便于进一步分析。 ##### AllowSeriesSelection **定义:** 控制是否允许用户选择数据序列。 **用途:**...

    oracle学习资料

    - **主键约束**:`PRIMARY KEY`确保列或列组合的唯一性,并且不允许为空。 - **唯一性约束**:`UNIQUE`确保列或列组合的唯一性,但允许为空。 - **外键约束**:`FOREIGN KEY`用于定义与另一张表的主键的联系。 -...

    SQL语句STARTWITH.docx

    - **修改列**: 要更改列属性,通常需要先删除再重建列,因为SQL不支持直接修改列定义。 6. **索引**: - **创建索引**: 使用`CREATE INDEX`创建索引,可选`UNIQUE`确保唯一性。 - **删除索引**: `DROP INDEX`...

    mysql总结.docx

    1. **为频繁排序、分组、联合操作的字段建立索引:** 这些操作通常需要对数据进行排序,索引能够显著提高这类操作的速度。 2. **为常用的查询条件字段建立索引:** 经常被用于WHERE子句中的字段应当建立索引,以减少...

    mysq count优化.docx

    - **覆盖索引**:构建覆盖索引,使得查询可以在索引中完成,减少对主键索引的访问。 ##### 2.4 使用COUNT(COLUMN) - **原理**:`COUNT(column)`只计算非NULL的column值,相对于`COUNT(*)`,它可以减少数据的扫描量...

    通过SQL_Server_2005索引视图提高性能

    非聚集索引提供了更多的查询优化选择,尤其当查询涉及到不在聚集索引中的列时,非聚集索引可以帮助查询优化器避免全表扫描,从而提升性能。 #### 四、应用索引视图的优点 1. **提高数据访问速度**:通过预先计算和...

    sql 语言练习题

    - **GROUP BY子句**:按指定列对数据进行分组。 - **HAVING子句**:在分组后设置条件过滤。 4. **连接查询**: - **INNER JOIN**:返回两个表中存在匹配的记录。 - **LEFT JOIN (OUTER JOIN)**:返回左表的所有...

    SQL Server笔试题.doc

    - **PRIMARY KEY**: 主键,用于唯一标识表中每一行的字段,不允许为空且唯一。 - **IDENTITY**: 标识列,自增长的整数列,通常用作主键。 - **FOREIGN KEY**: 外键,用于建立两个表之间的关联,引用另一个表的...

    ORACLE SQL性能調整

    29. **不明确的索引等级**:确保索引列在查询中出现的位置与索引定义一致。 30. **强制索引失效**:在测试和优化时,有时需要强制绕过索引以观察不同执行计划的影响。 31. **避免在索引列上使用计算**:计算会阻止...

    数据库应用 实验三

    实验三主要围绕数据库中的视图和索引展开,旨在帮助学习者深入了解数据库操作。以下是针对实验内容的详细说明: ### 视图 1. **理解视图的概念**:视图是数据库中的虚拟表,它不存储数据,而是基于一个或多个表的...

    sql经典笔试题一(含答案)

    - **分组查询**:GROUP BY语句用于按一个或多个列对结果进行分组,常与聚合函数一起使用,如AVG、SUM、MAX、MIN和COUNT。 3. **填空题** - **索引**:索引分为聚集索引和非聚集索引。聚集索引决定了数据在磁盘上...

    sql详解-oracle

    - 避免过度索引,以免影响插入和更新操作的性能。 2. **查询优化** - 使用EXPLAIN PLAN分析查询计划,找出性能瓶颈。 - 避免在WHERE子句中使用函数或表达式,这可能使得索引无法使用。 - 选择合适的连接方式和...

    MySQL基本知识点梳理和查询优化.pdf

    - **选择区分度高的列**: 区分度公式为COUNT(DISTINCT col) / COUNT(*),比率越高,查询效率越高。 - **唯一键**: 对于具有唯一性的字段,建议建立唯一键索引。 #### 二、EXPLAIN中有用的信息 **1. 基本用法** ...

    程序员的SQL金典.pdf 高清 下载

    - **4.1.3 列别名**:使用AS关键字为列命名别名。 - **4.1.4 按条件过滤**:使用WHERE子句根据条件过滤数据。 - **4.1.5 数据汇总**:使用聚合函数(如COUNT、SUM、AVG等)对数据进行汇总统计。 - **4.1.6 排序**:...

    经典SQL语句大全

    `NOT NULL` 表示该列不允许为空,`PRIMARY KEY` 表示该列为表的主键。 **5. 根据已有的表创建新表** - **使用旧表创建新表**: - **语法**: `CREATE TABLE 新表名 LIKE 旧表名;` - **示例**: `CREATE TABLE tab_...

Global site tag (gtag.js) - Google Analytics