索引 (Index) 可以帮助我们从表格中快速地找到需要的数据。举例来说,假设我们要在一本园艺书中找如何种植青椒的讯息。若这本书没有索引的话,那我们是必须要从头开始读,直到我们找到有关种直青椒的地方为止。若这本书有索引的话,我们就可以先去索引找出种植青椒的资讯是在哪一页,然后直接到那一页去阅读。很明显地,运用索引是一种有效且省时的方式。
从数据库表格中寻找数据也是同样的原理。如果一个表格没有索引的话,数据库系统就需要将整个表格的数据读出 (这个过程叫做'table scan')。若有适当的索引存在,数据库系统就可以先由这个索引去找出需要的数据是在表格的什么地方,然后直接去那些地方查询数据。这样子速度就快多了。
因此,在表格上建立索引是一件有利于系统效率的事。一个索引可以涵盖一或多个列。
注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
SQL CREATE INDEX 语法
在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_name ON table_name (column_name)
注释:"column_name" 规定需要索引的列。
SQL CREATE UNIQUE INDEX 语法
在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX index_name ON table_name (column_name)
示例
现在假设我们有以下这个表格,
我们想在Last_Name这个列上建索引,sql语句:
CREATE INDEX IDX_CUSTOMER_LAST_NAME ON Customer (Last_Name);
假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开,我们想把City, Country这两个列建索引,sql语句:
CREATE INDEX IDX_CUSTOMER_LOCATION ON Customer (City, Country);
如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC:
CREATE INDEX PersonIndex ON Customer (Last_Name DESC)
索引的命名并没有一个固定的方式。通常会用的方式是在名称前加一个字首,例如 "IDX_" ,来避免与数据库中的其他物件混淆。另外,在索引名之内包括表格名及列名也是一个好的方式。
请读者注意,每个数据库会有它本身的 CREATE INDEX 语法,而不同数据库的语法会有不同。因此,在下指令前,请先由数据库使用手册中确认正确的语法。
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程