版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Mysql索引用指针指向存储在表中指定列的数据值,然后根据指定的次序排列这些指针,有助于引。索引将占用磁盘空间,并且影响数据更新的速度。但是在多数情况下,索引所带来的在MySQLB-Tree索引(B+Tree,Hash索引,Fulltext索引和R-Tree索引。CREATEINDEX使用,不过目前只有CHAR、VARCHAR,TEXT全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHEREnameLIKE由于HASH的唯一(几乎100%的唯一)及类似键值对的形式,很适合作为索引。BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树每次查询都是从树的入口root开始,依次遍历node,获取leaf。这是MySQL里默认和最RTREE在MySQL很少使用,仅支持geometry数据类型,支持该类型的存储引擎只有MyISAM、BDb、InnoDb、NDb、Archive几种。fulltext:FULLTEXT用在比较短的文本,如果就一两行字的,普通的INDEX也可以。mB+Tree1mm(B-Treem-序的链表,方便遍历B+树。MyISAMB+Treedata下图是MyISAM主键索引的原理图:Col1myisam1MyISAM引(Primarykey)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。引要求key是唯一的,而辅助索引的key可以重复。如果我们在Col2上建立一个辅助B+TreeKeydata然后以data域的值为地址,读取相应数据记录。inndb)InnoDB(同时也是数据文件)的示意图,可以看到叶节点包含了完整的数据记录。这种索引叫做聚集索引。因为InnoDB的数据文件本身定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在InnoDB的所有辅助索引都引用主键作为data域。例如,下图为定义在Col3上的一个InnoDB表是基于聚簇索引建立的。因此InnoDB的索引能提供一种非常快速的主键查找性能。不过,它的辅助索引(SecondaryIndex,也就是非主键索引)也会包含主键列,所以,如果主键定义的比较大,其他索引也将很大。如果想在表上定义、很多索引,则争取尽量把主键定义得小一些。InnoDB不会压缩索引。不同存储引擎的索引实现方式对于正确使用和优化索引都非常有帮助,例如知道了InnoDB的索引实现后,就很容易明白为什么不建议使用过长的字段作为主键,因为所有辅InnoDBInnoDBB+Tree,非单调的主键B+Tree一是主索引的区别,InnoDBMyISAM二是辅助索引的区别:InnoDB的辅助索引data域存储相应记录主键的值而不是地址。而MyISAM的辅助索引和主索引没有多大区别。1showstatus命令了解各种sqlexplain使用说明操作,降低内存与CPU资源的消耗。例如下面SQL语句不能使用索引。select*fromdocwheretitlelike'%XX'而非前导模糊查询则可以使用索引,如下面的SQL语句。select*fromdocwheretitlelike'XX%'union、in、or都能够命中索引,建议使用inselect*fromdocwherestatus=1unionallselect*fromdocwhere直接告诉MySQL怎么做,MySQL耗费的CPU最少,但是一般不这么写SQL。select*fromdocwherestatusin(1,查询优化耗费的CPU比unionall多,但可以忽略不计,一般情况下建议使用inor:新版的MySQL能够命中索引。select*fromdocwherestatus=1orstatus=查询优化耗费的CPU比in多,不建议频繁用or负向条件查询不能使用索引,可以优化为in查询。负向条件有:!=、<>、notin、notexists、notlike等。select*fromdocwherestatus1andstatus2可以优化为in查询:select*fromdocwherestatusin联合索引最左前缀原则(又叫最左侧查询如果在(a,b,c)三个字段上建立联合索引,那么它能够加快a|(a,b)|(a,b,c)三组查询速 Select*fromtablewhereb=””(不走索引)如果phone字段是varchar类型,则下面的SQL不能命中索引。select*fromuserwherephone以优化为:select*fromuserwhere范围列可以用到索引(联合索引必须是最左前缀mysqlsql引速度要快则不走索引。假如有联合索引(empno、title、fromdate),那么下面的SQL中emp_no引,而title和from_dateselect*fromemployees.titleswhereemp_no<10010'andtitle='SeniorEngineer'andfrom_datebetween'1986-01-01'and'1986-12-31'应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用应尽量避免在whereselectidfromtwhereselectidfromtwhereGROUPBYselectsexfromemployeewheredep=123 groupbysexhavingage>10;1、groupby实质是先排序后分组,遵照索引的最佳左前缀。2、wherehavingwherehaving列有大量数据重复时,SQLsex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。UnionunionallUnionAll,对两个结果集进行并集操作,包括重复行,不进行排序;包含重复的数据的话,那么就使用UNIONALL。mysqlforceindex(select*fromtableforceindex(ziduan1_indexlimit2;(强制使用索引select*fromtableignoreindex(ziduan1_index)limit21.请问如下三条SQLwherea=1andb=1whereb=1whereb=1orderbytimeidxab(a,b)和idxbtime(b,time第二问:MySQLwhereSQL,idxba(b,a)wheremysql>mysql> SELECT*FROMWHERESTATUS=1limit++ |id|select_type| |partitions|type|+||key_len| +| |filtered|Extra++++++++++ 1| |tb_news_online| | |idx_tb_news_online_9 |const|99494+++++100| ++++++、range、indexhe和ALL的域从WHERE语句中选择一个合适的语句keyNULL,则没有使用索引。很少的情
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新建公寓居住权使用权转让协议书
- 托管简易仓库租赁合同
- 乡村资产管理之道
- 临时物业管理人员招聘合同
- 2025事业单位聘用劳动合同书范本
- 住宅小区钢筋施工协议
- 模具合作合同样本
- 2025防腐工程承包合同范本
- 2025知识产权合同音乐著作权授权协议
- 2025铲车台班合同
- 广西柳州铁一中、南宁三中 2025届高一数学第一学期期末统考试题含解析
- 服装设计基础学习通超星期末考试答案章节答案2024年
- 2024年高等教育教育类自考-03372团体心理咨询考试近5年真题集锦(频考类试题)带答案
- 光合作用(光合作用的研究历程)课件-2024-2025学年北师大版生物七年级上册
- 黑龙江省哈尔滨市第九中学校2024-2025学年高三上学期9月考试历史学科试卷
- 2024全国高中数学联赛山东赛区预赛试卷(含解析)
- 2024年安徽六年级数学第一学期期末考试试题含解析
- 2021-2022学年统编版道德与法治五年级上册全册单元测试题及答案(每单元1套共6套)
- 上海市县(2024年-2025年小学四年级语文)统编版期末考试(上学期)试卷及答案
- 期末自主测评(5)(试题)-2024-2025学年四年级上册数学北师大版
- 北京市大兴区名校2025届数学八年级第一学期期末统考试题含解析2
评论
0/150
提交评论