精华内容
下载资源
问答
  • Access 创建索引

    2011-10-22 10:51:44
    若要快速查找和排序记录,就需要索引单个字段或字段的组合。对于某一张表来说,建立索引的操作就是要指定一个或者多个字段,以便于按这个或者这些字段中的值来检索数据,或者排序数据。本文讲解如何在中文Access ...
    2005-12-02 16:41 航标 PConlin 我要评论(1) 字号: T | T
    一键收藏,随时查看,分享好友!

    若要快速查找和排序记录,就需要索引单个字段或字段的组合。对于某一张表来说,建立索引的操作就是要指定一个或者多个字段,以便于按这个或者这些字段中的值来检索数据,或者排序数据。本文讲解如何在中文Access 2000中能建立的索引。

    AD:

    若要快速查找和排序记录,就需要索引单个字段或字段的组合。对于某一张表来说,建立索引的操作就是要指定一个或者多个字段,以便于按这个或者这些字段中的值来检索数据,或者排序数据。在中文Access 2000中能建立的索引如下所述。
    1.创建单字段索引
    “单字段索引”的意思是一张表中只有一个用于索引的字段,使用下列步骤进行操作可以建立它:
    步骤一、在“设计”视图中打开表。
    步骤二、在“设计”视图的字段列表中单击要创建索引的字段,选定它。
    步骤三、在“常规”选项卡中单击“索引”属性框内部,然后从下拉列表中选择“有(有重复)”或“有(无重复)”项,参见图33。
    在图33所示的“索引”下拉列表中,单击“有(无重复)”选项,可以确保该字段中的记录没有重复值。这是常用的选项。
    接下来关闭该视图后,索引就建立好了。此后,您就可以将此字段中的值按升序或者降序的方式进行排序,并让各行记录值重新排列后来显示。即这种重新排序的结果是使得各行记录按索引的定义在表中重新排列,从而有利于浏览数据记录。
    注意:用于索引的字段,通常是一些可以用于排序数据记录,如:数字、英文单词,也能用于中文,但不常用。




    图33 单击这个下拉按钮


    2.创建多字段索引
    为了创建多字段索引,可以使用下列步骤进行操作:
    步骤一、在“设计”视图中打开表。
    步骤二、单击“设计”视图工具栏中的“索引”按钮,参见图34。


    图34 单击这个按钮

    步骤三、若表中当前没有索引和主键的话,可在图35所示的“索引”对话框中,单击“索引名称”栏中的第一个空行,然后键入索引名称。否则,可在该栏的第二行中输入它,以便建立第二个索引。


    图35 在这里输入名称

    “索引名称”仅是索引的标识,可以使用索引字段的名称来命名,或使用具有某种含义的字符串。如,本例将建立“合同金额”索引,以便于以后按合同金额的大小排序来浏览数据记录,所以给出了图35中所示的索引名称。
    步骤四、在“字段名称”栏中,单击下拉按钮,然后从下拉列表中选定择用于索引的字段,参见图36。


    图36 从下拉列表中选择这个字段



    图37 单击这个下拉按钮

    步骤五、将光标移至右旁的“排序次序”栏中,单击下拉按钮后从下拉列表中选择排序方式,参见图37。
    步骤六、若要使用多个索引,而且重新定义“主键”的话,单击“索引”对话框的左下部的“主索引”下拉按钮,然后从图38所示的下拉列表中选择“主索引”。

    图38 单击这个下拉按钮

    步骤七、将光标移至“字段名称”栏中的下一行中,单击该行所在单元格,然后通过图38所示的下拉列表选定第二个索引字段,如“单位地址”。

    这一步操作将指定第二个索引,而该行的“索引名称”栏中仍将是空白。您可以重复该操作,直到选择了应包含在索引中的所有字段,最多可达到10个字段。关闭“索引”对话框后,用于该表的索引就建立好了。此后,您还可在任何时候,按照上面的操作进入“索引”对话框中来观看和编辑索引。若要删除某一个索引的话,只需要在这个对话框的列表中将它删除掉即可,这种删除不会显示到表中的结构与数据记录,您尽管放心的操作吧!


    来自:http://database.51cto.com/art/200512/12960.htm


    展开全文
  • Access数据库创建复合索引

    千次阅读 2009-10-16 00:52:00
    Access数据库创建复合索引Access习惯了傻瓜式用鼠标点来点去,发现不能用鼠标创建复合索引,但SQL语句还是可以的: create unique index 索引名 on 表名(字段1,字段2) OK!

    Access数据库创建复合索引

    用Access习惯了傻瓜式用鼠标点来点去,发现不能用鼠标创建复合索引,但SQL语句还是可以的:
    create unique index 索引名 on 表名(字段1,字段2)

    OK!

    展开全文
  • access 重置索引 表中包含的数据越多,需要更多的索引来搜索和排序该数据。 但是,有足够的索引和太多的索引之间是一个平衡。...数字 这意味着Access将在以这些术语开头或结尾的任何字段上自动创建索引。...

    access 重置索引

    表中包含的数据越多,需要更多的索引来搜索和排序该数据。 但是,有足够的索引和太多的索引之间是一个平衡。 索引太多会减慢记录更新的速度。

    Access为您预设了许多索引。 如果您在“表/查询”选项卡下的“工具...选项”中查看,则会在“导入/创建时自动索引”下看到以下列表:

    ID;键;代码;数字

    这意味着Access将在以这些术语开头或结尾的任何字段上自动创建索引。 尽管这可能有所帮助,但它也可能意味着访问将在您不希望建立索引的字段上创建重复的索引或索引。 如果您有信心设置自己的索引,则可以删除此列表。

    Access创建索引时,它实质上是在内部将值存储在要建立索引的字段中以及具有该值的每个字段的位置。 这样可以加快对该字段的搜索速度。

    当您将一个字段设置为主键时,它将自动被索引。 您需要定义的大多数索引将仅包含来自单个字段的值。

    创建索引

    要在单个字段上创建索引,请在设计视图中打开表。 选择要在其上创建索引的字段。 转到“索引”属性,然后将属性值更改为“是”(重复“确定”)。 另一个是的值(不重复)仅用于唯一的字段(不重复任何值)。 是(否重复)值由主键使用,并且在与其他表的关系仅一对一的外键上创建索引时也很有用。

    如果您在一个表中的多个字段上创建索引,例如在两个字段中并在查询中的两个字段上设置条件,Access将组合索引以搜索表。

    多个字段索引

    如果在查询大型表时经常在多个字段上设置条件,则创建一个多字段索引以免Access合并多个单个字段索引可能会很有用。 一个很好的例子是当您同时搜索姓和名字段时。

    要创建多字段索引,请在设计视图中打开表,然后打开索引窗口(“ View ... Indexes”)。 在索引名称下,为多字段索引指定一个名称,例如FullName。 您只需要在第一行输入。 在字段名称下添加姓氏字段并设置排序顺序。 然后转到下一行,在“字段名称”下添加“名字”字段并设置排序顺序。 现在,您已经创建了一个多字段索引。

    翻译自: https://bytes.com/topic/access/insights/742480-indexes-microsoft-access

    access 重置索引

    展开全文
  • 组合索引

    千次阅读 2013-11-02 11:19:49
    创建组合索引create index idx_detp on detp(col1,col2,col3,....),则我们称idx_emp索引为组合索引。 在组合索引中有一个重要的概念:引导列(leading column),在上面的例子中,col1列为引导列。 当我们进行...

    组合索引(concatenated index):由多个列构成的索引,

    创建组合索引create index idx_detp on detp(col1,col2,col3,....),则我们称idx_emp索引为组合索引。

    在组合索引中有一个重要的概念:引导列(leading column),在上面的例子中,col1列为引导列。

    当我们进行查询时where 限制条件必须有引导列.

    create index idx_detp on detp(col1,col2,col3,....) 在idx_detp组合索引,col1为引导列

    上面的例子,

    一,使用组合索引的情况(where 条件中有引导列)

    1,where col1 =

    2,,where col1 = and col2=

    3,,where col2 = and col1=

    二,不会使用该索引(where 条件中没有引导列)

    where col2= ”查询就不会使用该索引。

    所以限制条件中包含先导列时,该限制条件才会使用该组合索引。

    下面是测试案例

    一,以为dba_objects表的数据来测试,建一个测试表

    SQL> create table t as select * from dba_objects;


    Table created.

    SQL> select count(*) from t;

      COUNT(*)
    ----------
         72766

    二,创建组合索引object_id列为引导列

    SQL> create index object_id_t on t(object_id,data_object_id);

    Index created.

    SQL> show parameter sql_trace;

    NAME           TYPE             VALUE
    --------- ------------  ------------------
    sql_trace      boolean     FALSE


    SQL> alter system set sql_trace=true;


    System altered.

    SQL> set autotrace traceonly;
    SQL> select * from t where object_id=20;      --------从执行计划可以看出,走的是索引

    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 46312585

    -------------------------------------------------------------------------------------------

    | Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |

    -------------------------------------------------------------------------------------------

    |   0 | SELECT STATEMENT            |             |     1 |   207 |     3   (0)| 00:00:01 |

    |   1 |  TABLE ACCESS BY INDEX ROWID| T           |     1 |   207 |     3   (0)| 00:00:01 |

    |*  2 |   INDEX RANGE SCAN          | OBJECT_ID_T |     1 |       |     2   (0)| 00:00:01 |

    -------------------------------------------------------------------------------------------


    Predicate Information (identified by operation id):
    ---------------------------------------------------

       2 - access("OBJECT_ID"=20)

    Note
    -----
       - dynamic sampling used for this statement (level=2)


    Statistics
    ----------------------------------------------------------
              7  recursive calls
              0  db block gets
             71  consistent gets
              0  physical reads
              0  redo size
           1389  bytes sent via SQL*Net to client
            419  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
              1  rows processed

    SQL> select * from t where data_object_id=2;    --- data_object_id不是引导了,在查找中因为where条件,没有引导列,虽然建了索引,但是没有起到作用         

    18 rows selected.


    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 1601196873

    --------------------------------------------------------------------------
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |      |    11 |  2277 |   283   (1)| 00:00:04 |
    |*  1 |  TABLE ACCESS FULL| T    |    11 |  2277 |   283   (1)| 00:00:04 |             ----------走的是全表索引
    --------------------------------------------------------------------------

    Predicate Information (identified by operation id):
    ---------------------------------------------------

       1 - filter("DATA_OBJECT_ID"=2)

    Note
    -----
       - dynamic sampling used for this statement (level=2)


    Statistics
    ----------------------------------------------------------
              4  recursive calls
              0  db block gets
           1104  consistent gets
           1035  physical reads
              0  redo size
           2065  bytes sent via SQL*Net to client
            430  bytes received via SQL*Net from client
              3  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
             18  rows processed

    SQL> select * from t where data_object_id=2 and object_id=20;         -------where条件有引导列,在查询中,执行计划走的是组合索引


    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 46312585

    -------------------------------------------------------------------------------------------

    | Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |

    -------------------------------------------------------------------------------------------

    |   0 | SELECT STATEMENT            |             |     1 |   207 |     2   (0)| 00:00:01 |

    |   1 |  TABLE ACCESS BY INDEX ROWID| T           |     1 |   207 |     2   (0)| 00:00:01 |

    |*  2 |   INDEX RANGE SCAN          | OBJECT_ID_T |     1 |       |     1   (0)| 00:00:01 |

    -------------------------------------------------------------------------------------------


    Predicate Information (identified by operation id):
    ---------------------------------------------------

       2 - access("OBJECT_ID"=20 AND "DATA_OBJECT_ID"=2)

    Note
    -----
       - dynamic sampling used for this statement (level=2)


    Statistics
    ----------------------------------------------------------
              9  recursive calls
              0  db block gets
             71  consistent gets
              0  physical reads
              0  redo size
           1389  bytes sent via SQL*Net to client
            419  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)

              1  rows processed


    ---------------------------------------------------------------

    在组合索引中使用不等于操作符(<>、!=) 不走索引,


    测试案例,
    SQL> select * from t where data_object_id=2 and object_id<>20;   --------没有走索引

    17 rows selected.


    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 1601196873

    --------------------------------------------------------------------------
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |      |    33 |  6831 |   283   (1)| 00:00:04 |
    |*  1 |  TABLE ACCESS FULL| T    |    33 |  6831 |   283   (1)| 00:00:04 |
    --------------------------------------------------------------------------

    Predicate Information (identified by operation id):
    ---------------------------------------------------

       1 - filter("DATA_OBJECT_ID"=2 AND "OBJECT_ID"<>20)

    Note
    -----
       - dynamic sampling used for this statement (level=2)


    Statistics
    ----------------------------------------------------------
              4  recursive calls
              0  db block gets
           1104  consistent gets
           1035  physical reads
              0  redo size
           2042  bytes sent via SQL*Net to client
            430  bytes received via SQL*Net from client
              3  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
             17  rows processed


    SQL> select * from t where data_object_id=2 and object_id !=20;  ----使用了!=不等符,没有走索引

    17 rows selected.


    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 1601196873

    --------------------------------------------------------------------------
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |      |    33 |  6831 |   283   (1)| 00:00:04 |
    |*  1 |  TABLE ACCESS FULL| T    |    33 |  6831 |   283   (1)| 00:00:04 |
    --------------------------------------------------------------------------

    Predicate Information (identified by operation id):
    ---------------------------------------------------

       1 - filter("DATA_OBJECT_ID"=2 AND "OBJECT_ID"<>20)

    Note
    -----
       - dynamic sampling used for this statement (level=2)


    Statistics
    ----------------------------------------------------------
              4  recursive calls
              0  db block gets
           1104  consistent gets
           1035  physical reads
              0  redo size
           2042  bytes sent via SQL*Net to client
            430  bytes received via SQL*Net from client
              3  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
             17  rows processed


    修改sql语句,使它走组合索引(通过把不等于操作符改成OR条件,就可以使用索引,以避免全表扫描)
    SQL> select * from t where data_object_id=2 and  (object_id <20 or object_id>20);

    17 rows selected.


    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 396627435

    --------------------------------------------------------------------------------------------

    | Id  | Operation                    | Name        | Rows  | Bytes | Cost (%CPU)| Time     |

    --------------------------------------------------------------------------------------------

    |   0 | SELECT STATEMENT             |             |    65 | 13455 |     8   (0)| 00:00:01 |

    |   1 |  CONCATENATION               |             |       |       ||          |

    |   2 |   TABLE ACCESS BY INDEX ROWID| T           |    33 |  6831 |     4   (0)| 00:00:01 |

    |*  3 |    INDEX RANGE SCAN          | OBJECT_ID_T |     3 |       |     3   (0)| 00:00:01 |

    |   4 |   TABLE ACCESS BY INDEX ROWID| T           |    32 |  6624 |     4   (0)| 00:00:01 |

    |*  5 |    INDEX RANGE SCAN          | OBJECT_ID_T |     3 |       |     3   (0)| 00:00:01 |

    --------------------------------------------------------------------------------------------


    Predicate Information (identified by operation id):
    ---------------------------------------------------

       3 - access("OBJECT_ID">20 AND "DATA_OBJECT_ID"=2 AND "OBJECT_ID" IS NOT NULL)
           filter("DATA_OBJECT_ID"=2)
       5 - access("DATA_OBJECT_ID"=2 AND "OBJECT_ID"<20)
           filter("DATA_OBJECT_ID"=2 AND LNNVL("OBJECT_ID">20))

    Note
    -----
       - dynamic sampling used for this statement (level=2)


    Statistics
    ----------------------------------------------------------
             13  recursive calls
              0  db block gets
            446  consistent gets
              0  physical reads
              0  redo size
           2086  bytes sent via SQL*Net to client
            430  bytes received via SQL*Net from client
              3  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
             17  rows processed




















    展开全文
  • Oracle中组合索引的使用详解

    千次阅读 2018-08-11 17:49:02
    在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点: 1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL
  • 索引B-Tree: 一般来说, MySQL 中的 B-Tree 索引的物理文件大多都是以 B+tree的结构来存储的,也就是所有实际需要的数据都存放于 Tree 的 Leaf Node,而且到任何一个 Leaf Node 的最短路径的长度都是完全相同的,...
  • 组合索引的前导列与查询url:http://hi.baidu.com/klkl1110/blog/item/46994526d6306704908f9d10.html2009-01-05 19:36关于组合索引的使用一直都存在着一些争议,记得在学OU的Performance Tuning时,讲师认为组合...
  • 有这样一个SQL select count(*) from t1,t2 where t1.id=t2.id and t1.owner='SCOTT'; id列选择性很高,owner选择性很低 ...要优化它很简单,只需要在t1表上建立一个组合索引(owner,id),在t2表上建
  • 组合索引优化一条SQL

    2012-07-03 11:03:39
    |* 17 | TABLE ACCESS BY INDEX ROWID | T_HO_ORDER_STATISTICS | 671K| 10M| | 3573 (3)| |* 18 | INDEX RANGE SCAN | IND_IS_ISSUE | 673K| | | 468 (4)| 00:00:06 | -------------------------------------------...
  • (因为虽然索引的多列组合是唯一的,比如ID+NAME是唯一的,但是每一个单独的列依然可以有重复的值,因为只要ID+NAME是唯一的即可) 一、key与primary key区别   ...
  • 创建 Access 2007 表及用Access做数据库

    千次阅读 2008-03-11 22:31:00
    完成Access2007表的设计后,就可以开始创建Access2007表了,即构造每个表中的字段、定义每个字段的数据类型、设置字段的属性。 Access2007创建表分为创建新的数据库和在现有的数据库创建表两种情况。在创建新的...
  • 之前曾说过“不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程”,但对于字段选择性差意味着什么,组合索引字段顺序意味着什么,要求每个人必须了解;重复上一次的话:把mysql客户端...
  • 于另外一个组合索引里面了,要同时用上这个两个索引访问一张表,只能用 AND_EQUAL的Hints了,CBO中一般是不会在同一张表上选中两个索引一起去 访问的。 =====================================================...
  • oracle sql优化案例1(使用组合索引

    千次阅读 2012-02-28 10:47:32
    手工添加组合索引,使查询走组合索引,查询从65秒下降到1秒,逻辑读从71207(556M)下降到21 create indexSIEBEL.IDX_CX_POS_LOG_INFO_U1 on SIEBEL.CX_POS_LOG_INFO (ATTR_02, ATTR_04)  tablespace SIEB_...
  • 选择组合索引的前导列,必须根据具体的业务(SQL)写法和列的数据分布不同而不同,很多书或网上都说,前导列要选择高选择性的,但是,脱离具体的业务,这些是没有意义的,本文就举一些常见的例子来分析下如何正确...
  • 组合索引,前置列与where条件关系

    千次阅读 2014-05-10 22:03:11
    3535 consistent gets ---此索引owner前置,逻辑读为3535 0 physical reads 0 redo size 372119 bytes sent via SQL*Net to client 16363 bytes received via SQL*Net from client 1442 SQL*...
  • 之前曾说过“不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程”,但对于字段选择性差意味着什么,组合索引字段顺序意味着什么,要求每个人必须了解;重复上一次的话:把mysql客户端...
  • 如何创建合适的索引-主要是创建多列索引还是单列索引?  [复制链接] w_z_y 论坛徽章: 0 电梯直达 1#  发表于 2004-12-8 15:21 | 只看该作者 
  • 在生产库的环境中经常会看到有些开发建索引如下: ... idx_p_id_1 ON t1(p_id,bno); ... idx_p_id_2 on t1(p_id); 而其中p_id为选择率较高的索引列,如1/10,甚至有些直接就是主键索引; 真的需要同时存在这两个...
  • 如何创建合适的索引

    2012-01-31 17:01:07
    索引创建直接关系到执行sql语句的好坏,下面举个实例: SELECT SR_KPI_TYPE,  SR_ASSESS_TYPE,  SR_BSS_ORG_ID,  SR_BSS_ORG_NAME,  SR_CHANNEL_TYPE_ID,  0 GZ_HSL_AMOUNT_CUR,
  • 列值有NULL值创建索引

    千次阅读 2017-05-10 16:52:50
    如果where条件列查询目标SQL返回数据量比较少时,可以使用创建索引的方式来减少全表扫描的消耗。 例子:以ta表为例,在object_id上创建单键值B-Tree索引创建测试表: create table ta as select * from dba_...
  • 数据库索引创建以及常见优化

    千次阅读 2014-12-08 14:39:52
    如何使用数据库索引   使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。... 唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自
  • AccessAccess VBA学习总结

    千次阅读 2016-08-04 09:31:01
    access具有哪些数据类型,各有什么作用 Access允许九种数据类型:文本、备注、数值、日期/时间、货币、自动编号、是/否、OLE对象、超级链接、查询向导。在表的设计视图中,每一个字段都有设计类型。  ...
  • 如何创建oracle函数索引 Oracle8i的很重要的一个新特性就是增加了function-based index这种索引类型(后面简称为FBI)。 有了这个特性后,Oracle DBA就可以在索引中使用函数或者表达式了。这些函数可以使Oracle...
  • 实验环境:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 1、创建表插入数据 1 2 3 4 5 6 7 8 9 SQL>createtabletxtx(idint,namechar(2),txchar(3),id1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,511
精华内容 16,204
关键字:

access如何创建组合索引