当前位置: 首页 > news >正文

摄影网站做画册山东智慧团建官网

摄影网站做画册,山东智慧团建官网,用vps刷网站流量要怎么做,局域网即时通讯软件排名索引的分类与设计原则 文章目录 索引的分类与设计原则1. 索引的分类2. MySQL8.0索引新特性2.1 支持降序索引2.2 隐藏索引 3. 索引的设计原则3.1 适合索引的10个设计原则3.2 限制索引的数目3.3 不适合使用索引的情况 1. 索引的分类 从 功能逻辑 上说,索引主要有 4 种…

索引的分类与设计原则

文章目录

  • 索引的分类与设计原则
    • 1. 索引的分类
    • 2. MySQL8.0索引新特性
      • 2.1 支持降序索引
      • 2.2 隐藏索引
    • 3. 索引的设计原则
      • 3.1 适合索引的10个设计原则
      • 3.2 限制索引的数目
      • 3.3 不适合使用索引的情况

1. 索引的分类

  • 功能逻辑 上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引
  • 按照 物理实现方式,索引可以分为 2 种,分别是聚簇索引和非聚族索引
  • 按照 作用字段个数 进行划分,分成单列索引和联合索引

2. MySQL8.0索引新特性

2.1 支持降序索引

MySQL在8.0版本之前创建的仍然是升序索引,使用时进行反向扫描,这大大降低了数据库的效率。在某些场景下,降序索引意义重大。例如,如果一个查询,需要对多个列进行排序,且顺序要求不一致,那么使用降序索引将会避免数据库使用额外的文件排序操作,从而提高性能

2.2 隐藏索引

从MySQL 8x开始支持 隐藏索引 (invisible indexes),只需要将待删除的索引设置为隐藏索引,使查询优化器不再使用这个索引(即使使用force index (强制使用索引),优化器也不会使用该索引),确认将索引设置为隐藏索引后系统不受任何响应,就可以彻底删除索引。这种通过先将索引设置为隐藏索引,再删除索引的方式就是软删除通过这种方式可以验证删除索引后的性能,确认删除后无影响再考虑实际删除该索引。

注意:当索引被隐藏时,它的内容仍然是和正常索引一样实时更新的。如果一个索引需要长期被隐藏,那么可以将其删除,因为索引的存在会影响插入、更新和删除的性能。

3. 索引的设计原则

3.1 适合索引的10个设计原则

  1. 字段的数值有唯一性的限制

    • 业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。 (来源: Alibaba)

    说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的

  2. 频繁作为 WHERE 查询条件的字段

  3. 经常GROUP BY 和 ORDER BY的列

  4. DISTINCT 字段需要创建索引

  5. 多表JOIN 连接操作时,创建索引注意事项

    • 连接表的数量尽量不要超过 3 张,因为每增加一张表就相当于增加了一次嵌套的循环,数量级增长会非常快,严重影响查询的效率
    • 对 WHERE 条件创建索引,因为 WHERE才是对数据条件的过滤
    • 对用于连接的字段创建索引
  6. 使用列的类型小的创建索引

  7. 对于长字符串,使用字符串前缀创建索引

    • 使用索引列前缀的方式 无法支持使用索引排序,只能使用文件排序
    • 【强制】在varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度

    说明: 索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为 20 的索引,区分度会 高达 99%以上,可以使用 count(distinct left(列名,索引长度))/count()的区分度来确定

  8. 区分度高(散列性高)的列适合作为索引

    • 可以使用公式 select count(distinct a)/count(*) from t1 计算区分度,越接近1越好,一般超过33%就算是比较高效的索引了
  9. 使用最频繁的列放到联合索引的左侧

  10. 在多个字段都要创建索引的情况下,联合索引优于单值索引

3.2 限制索引的数目

在实际工作中,我们也需要注意平衡,索引的数目不是越多越好。我们需要限制每张表上的索引数量,建议单张表索引数量 不超过6个 。原因:

  • 每个索引都需要占用 磁盘空间,索引越多,需要的磁盘空间就越大
  • 索引会影响INSERT、DELETE、UPDATE等语句的性能,因为表中的数据更改的同时,索引也会进行调整和更新,会造成负担
  • 优化器在选择如何优化查询时,会根据统一信息,对每一个可以用到的 索引来进行评估,以生成出一个最好的执行计划,如果同时有很多个索引都可以用于查询,会增加MySQL优化器生成执行计划时间,降低查询性能

3.3 不适合使用索引的情况

  1. 在where中使用不到的字段,不要设置索引
  2. 数据量小的表最好不要使用索引
  3. 有大量重复数据的列上不要建立索引,即尽可能在区分度高的列上建索引
  4. 避免对经常更新的表创建过多的索引
  5. 不建议用无序的值作为索引
  6. 删除不再使用或者很少使用的索引
  7. 不要定义冗余或重复的索引
http://www.yayakq.cn/news/565306/

相关文章:

  • 网站布局结构有哪些合肥商业网站建设费用
  • 网站建设与研发正规的企业网站建设公司
  • 杭州营销网站建设公司深圳网站开发兼职
  • 妇科网站源码thinkphp企业网站开发
  • 1150网站建设服务器主板老域名
  • 网络推广与推广沈阳网站seo外包
  • 营销型企业网站建设策划建筑人才网官网网址
  • 网站建设 业务楼市政策最新消息
  • 网站维护一般做什么佛山互联网公司
  • 网站基本功能商城英文
  • 做网站潍坊免费建设网站的方法
  • 顺义建设网站网站备案查询官网
  • 焦作建设厅网站如何让百度新闻收录网站文章
  • 做网站最好的公司有哪些包头网站建设哪家好
  • 做神马网站优化快企业软件定制开发
  • 广州网站搭建费用做本地旅游网站
  • 即墨区城乡建设局网站代码查询网站
  • 游戏ui素材网站2021年最火的网页游戏
  • asp网站服务器架设网站建设投标书报价表
  • 做网站必须用对方服务器做优惠券的网站有哪些
  • 北京专业制作网站公司吗百度关键词seo
  • elementor做视频网站wordpress标签论坛
  • 灵山网站建设大学网站栏目建设通知
  • 快速网站收录外链购买平台
  • 建设一个网站的过程wordpress 子分类模板
  • 成品图片的网站在哪里找厦门企业网站建设专家
  • 济南网站建设选聚搜网络张掖响应式建站平台
  • 上海建筑设计公司网站河南网站seo设计
  • 兰州网站建设hiteeth易班班级网站建设展示PPT
  • 旅游网站前端模板百度信息流推广是什么意思