第9章索引2(论文资料).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 索引 课程目标 创建索引 删除索引 索引 索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。 如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要看所有数据。如果一个表有1000行,这比顺序读取至少快100倍。 注意如果需要访问大部分行,顺序读取要快得多,因为此时我们避免磁盘搜索。 索引 索引用于下面的操作: 快速找出匹配一个WHERE子句的行。 删除行。如果可以在多个索引中进行选择,MySQL通常使用找到最少行的索引。 当执行联接时,从其它表检索行。 对具体有索引的列key_col找出MAX()或MIN()值。 索引 如果对一个可用关键字的最左面的前缀进行了排序或分组(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有关键字元素后面有DESC,关键字以倒序被读取。 在一些情况中,可以对一个查询进行优化以便不用查询数据行即可以检索值。如果查询只使用来自某个表的数字型并且构成某些关键字的最左面前缀的列,为了更快,可以从索引树检索出值。 索引 有时MySQL不使用索引,即使有可用的索引。一种情形是当优化器估计到使用索引将需要MySQL访问表中的大部分行时。(在这种情况下,表扫描可能会更快些,因为需要的搜索要少)。然而,如果此类查询使用LIMIT只搜索部分行,MySQL则使用索引,因为它可以更快地找到几行并在结果中返回。 索引 Hash索引特征: 它们只用于使用=或=操作符的等式比较(但很快)。它不适合用于比较 操作符,例如发现范围值的。 优化器不能使用hash索引来加速ORDER BY操作。(该类索引不能用来按顺序搜索下一个条目)。 MySQL不能确定在两个值之间大约有多少行(这被范围优化器用来确定使用哪个索引)。如果将一个MyISAM表改为hash-索引的MEMORY表,会影响一些查询。 只能使用整个关键字来搜索一行。(用B-树索引,任何关键字的最左面的前缀可用来找到行)。 1. CREATE INDEX CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 [USING 索引类型] ON 表名(索引列,...) 其中,“索引列”的写法如下: 列名 [(长度)] [ASC | DESC] 1. CREATE INDEX 本语句用于在一个已有的表上创建一个索引,实际上CREATE INDEX最终会被MySQL转换成相应的ALTER TABLE语句执行。索引也可以在创建表时直接创建,即在CREATE TABLE中使用“INDEX 索引名 索引类型 (索引列1,索引列2,…)”子句创建索引。 可以使用类似(col1, col2,...)的列清单创建出一个多列索引。通过串接给定列中的值,确定索引值的格式。 1. CREATE INDEX 以下语句用于创建一个索引,索引使用列名称的前10个字符。 CREATE INDEX part_of_name ON customer (name(10)); 因为多数名称的前10个字符通常不同,所以此索引不会比使用列的全名创建的索引速度慢很多。另外,使用列的一部分创建索引可以使索引文件大大减小,从而节省了大量的磁盘空间,并有助于提高INSERT操作的速度。 1. CREATE INDEX 创建索引时要注意以下问题: 只有当正在使用MyISAM, InnoDB或BDB表类型时,可以向有NULL值的列中添加索引。 只有当正在使用MyISAM, BDB或InnoDB表类型时,可以向BLOB或TEXT列中添加索引。 1. CREATE INDEX ASC和DESC 指定索引列时可以附加ASC或DESC为结尾。这些关键词将来可以扩展,用于指定递增或递减索引值存储。但在目前,这些关键词没有作用,所有的索引值均以递增顺序存储。 1. CREATE INDEX 部分储存引擎允许在创建索引时指定索引类型。指定索引类型的语法是“USING 类型”。不同的储存引擎所支持的类型值已显示在下表中。如果列有多个索引类型,当没有指定index_type时,第一个类型是默认值。 MyISAM:BTREE InnoDB:BTREE MEMORY/HEAP:HASH, BTREE 1. CREATE INDEX 指定索引类型也可以使用“TYPE 类型”来指定,但是USING是首选的格式。另外,在索引语法中,位于索引类型前面的索引名称不能使用TYPE。这是因为,与USING不同,TYPE不是保留词,因此会被认为是一个索引名称。 如果指定的索引类型在给定的储存引擎中不合法,但是有其它的索引类型适合引擎使用,并且不会影响查询功能,则

文档评论(0)

juhui05 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档