网站app有哪些功能贵阳的网站建设公司
news/
2025/9/23 6:27:25/
文章来源:
网站app有哪些功能,贵阳的网站建设公司,wordpress备份和恢复,成都网站网页制作#x1f44f;作者简介#xff1a;大家好#xff0c;我是小周同志#xff0c;25届双非校招生Java选手#xff0c;很高兴认识大家
#x1f4d5;学习出处#xff1a;本文是学自小林coding (xiaolincoding.com) 网站的MYSQL图解篇
#x1f525;如果感觉博主的文章还不错的…作者简介大家好我是小周同志25届双非校招生Java选手很高兴认识大家
学习出处本文是学自小林coding (xiaolincoding.com) 网站的MYSQL图解篇
如果感觉博主的文章还不错的话请三连支持一下博主哦 有什么优化索引的方法
前缀索引优化 就是使用 某个字段中字符串的前几个字符 建立索引 为什么需要前缀来建立索引呢 为了减小索引字段大小可以增加一个索引页中存储的索引值有效提高索引的查询速度。 在一些大字符串的字段作为索引时使用前缀索引可以帮助我们减小索引项的大小。 前缀索引的局限性 order by 就无法使用前缀索引 无法把前缀索引用作覆盖索引 覆盖索引优化 覆盖索引就是只需要 二级索引的b树 就能得到需要查询的数据而不需要 主键索引的b树减少了回表操作 比如 select id where name aaa; 其中主键索引idname是二级索引。 这里会用到 覆盖索引因为二级索引b树的叶子节点就是主键索引的id。因为查询只需要查询id所以就减少了回表操作不需要再回表到主键索引通过的b树去查询数据了。 主键索引最好是自增的 如果主键索引是自增的 那么每次插入的新数据就会按顺序添加到当前索引节点的位置不需要移动已有的数据当页面写满就会自动开辟一个新页面。因为每次插入一条新记录都是追加操作不需要重新移动数据因此这种插入数据的方法效率非常高。 如果我们使用非自增主键 由于每次插入主键的索引值都是随机的因此每次插入新的数据时就可能会插入到现有数据页中间的某个位置这将不得不移动其它数据来满足新数据的插入甚至需要从一个页面复制数据到另外一个页面我们通常将这种情况称为 页分裂。页分裂还有可能会造成大量的内存碎片导致索引结构不紧凑从而影响查询效率。(因为一个数据页只能存16KB)
因此在使用 InnoDB 存储引擎时如果没有特别的业务需求建议使用自增字段作为主键。
另外主键字段的长度不要太大因为主键字段长度越小意味着二级索引的叶子节点越小二级索引的叶子节点存放的数据是主键值这样二级索引占用的空间也就越小。 索引最好设置为 NOT NULL
为了更好的利用索引索引列要设置为 NOT NULL 约束。有两个原因 原因一索引值为NULL会使优化器在做索引选择时更加复杂更加难以优化。比如进行索引统计时count 会省略值为NULL的行。 原因二NULL是个没意义的值会占用物理空间。因为 InnoDB 存储记录时如果表中存在允许为NULL的字段那么行格式中 至少会用 1字节空间存储NULL值列表。
防止索引失效
用上了索引并不意味着查询的时候用上了索引。有些情况会导致索引失效。
生索引失效的情况 当我们使用左或者左右模糊匹配的时候也就是 like %xx 或者 like %xx%这两种方式都会造成索引失效 当我们在查询条件中对索引列做了计算、函数、类型转换操作这些情况下都会造成索引失效 联合索引要能正确使用需要遵循最左匹配原则也就是按照最左优先的方式进行索引的匹配否则就会导致索引失效。 在 WHERE 子句中如果在 OR 前的条件列是索引列而在 OR 后的条件列不是索引列那么索引会失效。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911589.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!