第三章 MySQL索引.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文档。上传文档
查看更多
第三章 MySQL索引

MYSQL索引 课程介绍 本课程主要介绍了MySQL数据库的表达式运算符、MySQL函数,索引的用法、存储过程的使用,视图和触发器等方面的知识, 以应用为目标,具有较强的实践性。 学习对象 希望了解MySQL数据库基本概念,常见使用方法的学生、专业人士等 学习目标 在完成本章的学习后,您将能够: 了解索引的作用 掌握索引的创建、删除 了解全文索引 了解索引的使用和不足 目录大纲 为什么使用索引 普通索引 唯一索引 主键索引 全文索引 单列索引和组合索引 使用索引 索引的不足 索引是提高查询速度的最重要的工具。当然还有其它的一些技术可供使用,但是一般来说引起最大性能差异的都是索引的正确使用。首先使用索引来获取最大的性能提高,接着再看其它的技术是否有用。 我们为什么不对数据行进行排序从而省掉索引?这样不是也能实现同样的搜索速度的改善吗?是的,如果表只有一个索引,这样做也可能达到相同的效果。但是你可能添加第二个索引,那么就无法一次使用两种不同方法对数据行进行排序了(例如,你可能希望在顾客名称上建立一个索引,在顾客 ID 号或电话号码上建立另外一个索引)。 把与数据行相分离的条目作为索引解决了这个问题,允许我们创建多个索引。此外,索引中的行一般也比数据行短一些。当你插入或删除新的值的时候,移动较短的索引值比移动较长数据行的排序次序更加容易。 1 为什么使用索引 不同的 MySQL 存储引擎的索引实现的具体细节信息是不同的。例如,对于 MyISAM 数据表,该表的数据行保存在一个数据文件中,索引值保存在索引文件中。一个数据表上可能有多个索引,但是它们都被存储在同一个索引文件中。索引文件中的每个索引都包含一个排序的键记录(它用于快速地访问数据文件)数组。 BDB 和 InnoDB 存储引擎没有使用这种方法来分离数据行和索引值,尽管它们也把索引作为排序后的值集合进行操作。在默认情况下,BDB 引擎使用单个文件存储数据和索引值。InnoDB 使用单个数据表空间(tablespace),在表空间中管理所有 InnoDB 表的数据和索引存储。我们可以把 InnoDB 配置为每个表都在自己的表空间中创建,但是即使是这样,数据表的数据和索引也存储在同一个表空间文件中。 1 为什么使用索引 单个表查询环境下,通过减少对整个表的扫描,使用索引明显地提高了搜索的速度。当你运行涉及多表联结(jion)查询的时候,索引的价值就更高了。在单表查询中,你需要在每个数据列上检查的值的数量是表中数据行的数量。在多表查询中,这个数量可能大幅度上升,因为这个数量是这些表中数据行的数量所产生的。 为了演示索引的效果,向表 student 中先插入 10000 条数据。可以编写如下的存储过程来实现(存储过程会在以后的课程讲解) 1 为什么使用索引 delimiter $$ create procedure insertt() begin declare i int default 0; ins:loop set i = i+1; if i10000 then leave ins; end if; insert into student values(i/2,concat(‘zyj’,,i),’no intro’,60); end loop ins; end $$ 1 为什么使用索引 如果出现 Column count doesnt match value count at row 1 错误,则是由于写的 SQL 语句里列的数目和后面的值的数目不一致,请查正修改。然后执行如下语句,调用储存过程。 delimiter ; call insertt(); 在查找 name=zyj9991的记录时,没有用索引时,MySql 会扫描所有记录,即要查询 10000 次。查询所需时间为 0.03 秒。 1 为什么使用索引 如果在 name 上已经建立了索引,MySql几乎无须任何扫描,即准确可找到该记录! 1 为什么使用索引 这是最基本的索引,它没有任何限制。它有以下几种创建方式: 创建索引: CREATE INDEX indexName ON tableName(tableColumns(length));如果是 CHAR,VARCHAR 类型,length 可以小于字段实际长度;如果是 BLOB 和 TEXT 类型,必须指定 length,下同。 2 普通索引 修改表结构: ALTER table tableName ADD INDEX [index_name] [index_type] (index_col_name,...) 在列 id 上添加索引 如果不指定索引的名字,则与列名一

文档评论(0)

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

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

1亿VIP精品文档

相关文档