索引 (Index) 可以帮助我们从表格中快速地找到需要的资料。举例来说,假设我们要在一本园艺书中找如何种植青椒的讯息。若这本书没有索引的话,那我们是必须要从头开始读,直到我们找到有关种直青椒的地方为止。若这本书有索引的话,我们就可以先去索引找出种植青椒的资讯是在哪一页,然后直接到那一页去阅读。很明显地,运用索引是一种有效且省时的方式。

从资料库表格中寻找资料也是同样的原理。如果一个表格没有索引的话,资料库系统就需要将整个表格的资料读出 (这个过程叫做'table scan')。若有适当的索引存在,资料库系统就可以先由这个索引去找出需要的资料是在表格的什么地方,然后直接去那些地方抓资料。这样子速度就快多了。

因此,在表格上建立索引是一件有利于系统效率的事。一个索引可以涵盖一或多个栏位。建立索引的语法如下:

CREATE INDEX "INDEX_NAME" ON "TABLE_NAME" (COLUMN_NAME);

现在假设我们有以下这个表格,

Customer 表格

栏位名称 资料种类
First_Name char(50)
Last_Name char(50)
Address char(50)
City char(50)
Country char(25)
Birth_Date datetime

若我們要在 Last_Name 這個欄位上建一個索引,我們就打入以下的指令,

CREATE INDEX IDX_CUSTOMER_LAST_NAME
ON Customer (Last_Name);

若我们要在 Last_Name 这个栏位上建一个索引,我们就打入以下的指令,

CREATE INDEX IDX_CUSTOMER_LOCATION
ON Customer (City, Country);

索引的命名并没有一个固定的方式。通常会用的方式是在名称前加一个字首,例如 "IDX_" ,来避免与资料库中的其他物件混淆。另外,在索引名之内包括表格名及栏位名也是一个好的方式。

请读者注意,每个资料库会有它本身的 CREATE INDEX 语法,而不同资料库的语法会有不同。因此,在下指令前,请先由资料库使用手册中确认正确的语法。

Linux实测如下:

linux之SQL语句简明教程---CREATE INDEX的更多相关文章

  1. linux之SQL语句简明教程---CREATE VIEW

    视观表 (View) 可以被当作是虚拟表格.它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料. 建立一个视观表的语法如下: CREATE VIEW & ...

  2. linux之SQL语句简明教程---CREATE TABLE

    表格是数据库中储存资料的基本架构.在绝大部份的情况下,数据库厂商不可能知道您需要如何储存您的资料,所以通常您会需要自己在数据库中建立表格.虽然许多数据库工具可以让您在不需用到 SQL 的情况下建立表格 ...

  3. linux之SQL语句简明教程

    本教程参考http://www.1keydata.com/cn/sql/ 目的是让初学者了解linux下Mysql的操作,但是我仍想侧重于SQL语句的讲解 sql语句的学习将按照下图的流程: 当然在这 ...

  4. linux之SQL语句简明教程---INSERT INTO

    到目前为止,我们学到了将如何把资料由表格中取出.但是这些资料是如果进入这些表格的呢? 这就是这一页 (INSERT INTO) 和下一页 (UPDATE) 要讨论的. 基本上,我们有两种作法可以将资料 ...

  5. linux之SQL语句简明教程---UNION ALL

    UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起. UNION ALL 和UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复 ...

  6. linux之SQL语句简明教程---UNION

    UNION 指令的目的是将两个 SQL 语句的结果合并起来.从这个角度来看, UNION 跟 JOIN有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION 的一个限制是两个 SQL 语句 ...

  7. linux之SQL语句简明教程---Subquery

    我们可以在一个 SQL 语句中放入另一个 SQL 语句.当我们在 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,我们就有一个 subquery 的架构. Subquery 的作用 ...

  8. linux之SQL语句简明教程---AND OR

    在上一页中,我们看到 WHERE 指令可以被用来由表格中有条件地选取资料. 这个条件可能是简单的 (像上一页的例子),也可能是复杂的.复杂条件是由二或多个简单条件透过 AND 或是 OR的连接而成.一 ...

  9. linux之SQL语句简明教程---UPDATE DELETE FROM

    我们有时候可能会需要修改表格中的资料.在这个时候,我们就需要用到 UPDATE 指令.这个指令的语法是: UPDATE "表格名" SET "栏位1" = [新 ...

随机推荐

  1. jQuery之事件

    (一).事件列表. 1.blur() 当失去焦点时触发.包括鼠标点击离开和TAB键离开. 2.change() 当元素获取焦点后,值改变失去焦点事触发. 3.click() 当鼠标单击时触发. 4.d ...

  2. C# 动态Linq(结合反射)

      这篇文章决定对最近一个单机版Web程序用到的东西总结一下. 一.反射Linq之OrderBy 动态Linq结合反射对某字段排序: namespace 动态Linq { class Program ...

  3. scheme递归

    主要参考: http://www.shido.info/lisp/scheme7_e.html Function fact that calculates factorials. (define (f ...

  4. JDBC的使用——Statement

    JDBC是Java最基本的数据库操作途径,虽然现在有了更高端的Hibernate和JPA,但是其实它们的底层还是用的这些最基本的JDBC.而且,如果开发一个小型的应用程序,使用Hibernate不免有 ...

  5. bzoj2018 [Usaco2009 Nov]农场技艺大赛

    Description Input 第1行:10个空格分开的整数: N, a, b, c, d, e, f, g, h, M Output 第1行:满足总重量最轻,且用度之和最大的N头奶牛的总体重模M ...

  6. UESTC_酱神的旅行 2015 UESTC Training for Dynamic Programming<Problem M>

    M - 酱神的旅行 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit ...

  7. linux添加静态路由表,重启继续生效(转载)

    在日常的使用中,或者在服务器中,有两个网卡配置两个地址,访问不同的网络段,这种情况是非常常见的现象,但是,我们需要额外的添加路由表来决定发送的数据包经过正确的网关和interface才能正确的进行通信 ...

  8. 布局文件提示错误“No orientation specified, and the default is horizontal. This is a common so...”

    完整的错误提示信息为:No orientation specified, and the default is horizontal. This is a common source of bugs ...

  9. Unity uGUI 登录及注册功能

    上次我们已经完成了登录界面的模拟功能,今天咱们把上次没做完的继续完善下!那么废话少说直接开始吧! PS:本次完善的功能有: 1,增加对数据库的操作. 2,使用了MD5Key值加密 3,完善登录和组测功 ...

  10. HEVC测试序列(百度云网盘分享)

    巧妇难为无米之炊,身为一个码农怎能碗里没有米呢?想必很多朋友都碰到下载测试序列的困惑,为了减少麻烦,现提供HEVC所有测试序列的下载,上传到百度云网盘上,方便大家下载.主要的测试序列如下: Test ...