数据库建索引及用法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL> CREATE TABLE test_tab (

2 id INT,

3 name V ARCHAR(10),

4 age INT,

5 val V ARCHAR(10)

6 );

你的业务,有一个查询,是

SELECT * FROM test_tab WHERE name = 一个外部输入的数据

刚开始,数据不多的时候,执行效果还不错。

随着数据量的增加,这个查询,执行起来,越来越慢了。

然后在name 上面建立了索引

CREATE INDEX idx_test4_name ON test_tab (name );

这样,可以加快前面那个查询的速度。

但是,某天,你执行了下面这个SQL,发现速度又慢了

SELECT * FROM test_tab WHERE age = 25

为啥呢?因为age 字段上面,没有索引

索引只在name 上面有

换句话说,也就是WHERE 里面的条件,会自动判断,有没有可用的索引,如果有,该不该用。

多列索引,就是一个索引,包含了2个字段。

例如:

CREATE INDEX idx_test_name_age ON test_tab (name, age);

那么

SELECT * FROM test_tab

WHERE

name LIKE '张%'

AND age = 25

这样的查询,将能够使用上面的索引。

多列索引,还有一个可用的情况就是,某些情况下,可能查询,只访问索引就足够了,不需要再访问表了。例如:

SELECT

AVG( avg ) AS 平均年龄

FROM

test_tab

WHERE

name LIKE '张%'

这个时候,name 与age 都包含在索引里面。查询不需要去检索表中的数据。

相关文档
最新文档