- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
笔记 TIME \@ yyyy/M/d 2015/4/15
PAGE6 / NUMPAGES23
索引
前缀索引
建立索引关键字一种方案。
通常会使用字段的整体作为索引关键字。
有时,即使使用字段前部分数据,也可以去识别某些记录。
语法:
Index `index_name` (`index_field`(N))
使用index_name前N个字符建立的索引。
N,究竟是多少?
使用N长度所达到的辨识度,极限接近于使用全部长度的辨识度即可!
计算最大的辨识度:
依次取得前N个字符,进行对比,找到极限接近的:
可见,9 时,已经极限接近,提高长度,不能明显 提升辨识度,因此可以使用前9个字符:
Tip:前缀索引不能用于索引覆盖!
全文索引
该类型的索引特殊在:关键字的创建上。
为了解决 like ‘%keyword%’这类查询的匹配问题。
测试:
业务:
查询 标题或者内容包含 database 关键字的记录。
形成的SQL如下:
Select * from articles where title like ‘%database%’ or body like ‘%database%’;
此时不能建立普通索引,查询不符合 左原则,建立了也使用不了。
此时 全文索引就可以其作用了:
直接使用上面的SQL:
需要使用特殊的全文索引匹配语法才可以生效:
Match() against();
Tip: 该MYSQL提供的全文索引,不能对中文起作用!
Match() against() ,返回的关键字的匹配度(关键字与记录的关联程度)。
停止词:
发现in这个词,是不能被全文索引所检索到的。
思考:与 like %in% 是否相同?b
不同。
原因何在呢?
全文索引索引的的关键字,不是整个字段数据,而是从数据中提取的关键词。
索引的数据结构-了解
Hash
B-Tree(B树)
两种数据结构。指的是mysql存储索引所采用的数据结构。其中,用户所维护的所有的索引结构 B-Tree结构
B-Tree的结构如下:
每个节点,存储多个关键字。
关键字也会对应记录地址
以上设计为了解决,一次性磁盘IO开销,可以读取到更多的关键字数量。
每个关键字之间,存在子节点指针
如果是复合索引:
关键字的排序先排左侧字段,在左侧字段相同的情况下,再排序右侧字段:
聚集索引,聚簇索引
B+Tree(B-Tree的变种)
在innodb的存储引擎上,主索引是与数据记录 存储在一起的(聚簇在一起的)。
带来的问题:
Innodb的其他索引,非主键索引(二级索引):
关键字对应的不再是记录的地址,而是记录的主键。
可见,检索需要 二次检索。先检索到主键ID,在检索记录。
查询缓存 query_cache
将select的结果,存取起来共二次使用的缓存区域:
MySQL提供的缓存区:
未开启前:
两次查询时间消耗一致。
开启查询缓存:
通过变量控制:
开启并设置大小:
再次执行查询:
可见,第二次查询,使用了开启的缓存!
注意事项:
查询缓存存在判断是严格依赖于select语句本身的:严格保证SQL一致
如果查询时包含动态数据,则不能被缓存。
一旦开启查询缓存,MySQL会将所有可以被缓存的select语句都缓存。如果存在不想使用缓存的SQL执行,则可以使用 SQL_NO_CACHE语法提示达到目的:
分表
分区,partition
分表,水平分表,分裂
将某张表数据,分别存储到不同的区域中。
其实:每个分区,就是独立的表。都要存储该分区数据的数据,索引等信息。
创建分区:
在创建表时,指定分区的选项:
Create table table_name (
定义
)
Partition by 分区算法 (参数) 分区选项。
Tip:分区与存储引擎无关,是MySQL逻辑层完成的。
通过变量查看当前mysql是否支持分区:
分区算法:
MySQL提供4种
取余:Key,hash
条件:List,range
提示,参与分区的参数字段需要为主键的一部分。
KEY – 取余
按照某个字段进行取余
Hash – 取余
按照某个表达式的值进行取余
学生表分区,按照生日的月份,划分到12个表中。
Tip:
Key,hash都是取余算法,要求分区参数,返回的数据必须为整数。
List – 条件 – 列表
需要指定的每个分区数据的存储条件。
按照生日中的月份,分成春夏秋冬四个分区。
List,条件依赖的数据时列表形式。
Range - 条件 – 范围
Range:条件依赖的数据是一个条件表达式。
逻辑:按照生日的年份分成
管理分区语法
取余:key,hash
增加分区数量:
Add partition N
减少分区数量:
COALESCE partition
您可能关注的文档
最近下载
- (2025年高考真题) 2025年高考北京卷数学真题(原卷版).docx VIP
- 智慧药学与AIGC应用与实践技能培训题库答案-2025年华医网继续教育.docx VIP
- 善与美书简第十八封信:冰上舞蹈,跃出误区的艺术.docx VIP
- 人教部编版九年级语文上册名著导读(二)《水浒传》填空题练习 (含答案).pdf VIP
- 压裂施工安全操作规定.docx VIP
- GB T 14683-2017_硅酮和改性硅酮建筑密封胶_高清版_可检索.pdf
- 竞选升旗手演讲稿PPT.pptx VIP
- 三年级上语文试卷——期中综合测试卷 (PDF版,含答案)人教(部编版).pdf VIP
- 2024年10月 高等教育自学考试 真题 室内设计 00709.pdf VIP
- 统战培训课件.ppt VIP
原创力文档


文档评论(0)