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

做网站备案实名需要钱吗如何推广微信视频号

做网站备案实名需要钱吗,如何推广微信视频号,南阳企业网站排名优化,网络宣传策划方案目录 前言 一、前缀索引 1. 语法 2. 如何选择前缀长度 3. 前缀索引的查询流程 二、单列索引与联合索引 三、索引设计原则 前言 本期是MySQL进阶篇当中索引的最后一期内容,这里我们主要接着上一期继续讲解前缀索引、单例与联合索引。(上一期链接&…

 目录

前言

一、前缀索引

1. 语法 

2. 如何选择前缀长度

3. 前缀索引的查询流程

二、单列索引与联合索引

三、索引设计原则


前言

        本期是MySQL进阶篇当中索引的最后一期内容,这里我们主要接着上一期继续讲解前缀索引、单例与联合索引。(上一期链接:MySQL进阶-----SQL提示与覆盖索引-CSDN博客)

一、前缀索引

当字段类型为字符串( varchar text longtext 等)时,有时候需要索引很长的字符串,这会让
索引变得很大,查询时,浪费大量的磁盘 IO , 影响查询效率。此时可以只将字符串的一部分前缀,建立索引,这样可以大大节约索引空间,从而提高索引效率。

1. 语法 

create index idx_xxxx on table_name(column(n)) ;

 示例:

tb_user 表的 email 字段,建立长度为 5 的前缀索引。
create index index_email on tb_user(email(5));

2. 如何选择前缀长度

可以根据索引的选择性来决定,而选择性是指不重复的索引值(基数)和数据表的记录总数的比值,索引选择性越高则查询效率越高, 唯一索引的选择性是1 ,这是最好的索引选择性,性能也是最好的。

 下面这里我们看一下案例:

select count(distinct email)/count(*) from tb_user;

 可以看到上面显示的是1,也就是说所有的email字段的数据都没有出现重复,下面我们去从email字段数据去截取前5个字符比较试试看:

select count(distinct substring(email,1,5)) / count(*) from tb_user ;

这里我们可以看出出现重复了,但是非重复率还是有0.9583的,如果我们截取前4个或者前6个字符再试试看重复率:

#截取前四个
select count(distinct substring(email,1,4)) / count(*) from tb_user ;

#截取前6个
select count(distinct substring(email,1,6)) / count(*) from tb_user ;

上面这两个对比就知道,截取前4个的话重复率变大了,而截取前6个的话重复率不变 ,故最优解就是截取前面前5个即可。

3. 前缀索引的查询流程

前缀索引的查询流程基本上跟前面讲到过的是差不多的,这里会通过我们选择好的前缀去建立一个辅助索引,在辅助索引上面去找到相对应的索引目标,如果出现重复的话就会先找到第一个重复的索引数据,然后再去进行回表查询,如果确定完整的字段能够匹配成功的话就为当前字段,反正继续遍历下一个重复的结果。

二、单列索引与联合索引

这个的话我们前面几期的内容就接触过了。

单列索引:即一个索引只包含单个列。
联合索引:即一个索引包含了多个列。
我们先来看看 tb_user 表中目前的索引情况:
在查询出来的索引中,既有单列索引,又有联合索引。

 接下来,我们来执行一条SQL语句,看看其执行计划:

explain select id,phone,name from tb_user where phone='17799990000' and name='吕布';

通过上述执行计划我们可以看出来,在 and 连接的两个字段 phone name 上都是有单列索引的,但是最终mysql 只会选择一个索引,也就是说,只能走一个字段的索引,此时是会回表查询的。
紧接着,我们再来创建一个 phone name 字段的联合索引来查询一下执行计划。
create unique index idx_user_phone_name on tb_user(phone,name);

 此时,查询时,就走了联合索引,而在联合索引中包含 phonename的信息,在叶子节点下挂的是对应的主键id,所以查询是无需回表查询的。

如果查询使用的是联合索引,具体的结构示意图如下:

在业务场景中,如果存在多个查询条件,考虑针对于查询字段建立索引时,建议建立联合索引,而非单列索引

三、索引设计原则

  1. 针对于数据量较大,且查询比较频繁的表建立索引。
  2. 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索 引。
  3. 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。
  4.  如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引。
  5.  尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间, 避免回表,提高查询效率。
  6. 要控制索引的数量,索引并不是多多益善,索引越多,维护索引结构的代价也就越大,会影响增删改的效率。
  7.  如果索引列不能存储NULL值,请在创建表时使用NOT NULL约束它。当优化器知道每列是否包含NULL值时,它可以更好地确定哪个索引最有效地用于查询

以上就是本期的全部内容,我们下次见。

分享一张壁纸: 

http://www.yayakq.cn/news/976440/

相关文章:

  • 邢台专业网站建设费用汕头模板建站软件
  • 德州有名的网站建设公司搬家公司电话附近
  • 做网站什么商品好网站建设策划方案t
  • 搭建网站要用到的工具wordpress博客主题下载
  • 东莞最好的网站成都网站建设培训学校
  • 图文广告公司名称给甜品网站做seo
  • 网站集约化建设情况空间和域名一年多少钱
  • 建设企业网银u盾网站打不开wordpress博客网站描述在哪里
  • 如何做网站首页收录创意广告公司名字
  • 重庆建设机电有限公司网站做招聘图片的网站
  • 电子商务网站盈利模式入职简历模板
  • 电子商务论文网站建设开发网站建设的问卷调查
  • 什么网站了解国家建设的行情免费发帖推广平台
  • 需求网站电商网站建设那家好
  • 学网站建设的学校大连招投标网官网
  • 宜宾市做网站多少钱怎样制作手机视频教程
  • 品牌网站如何做seowordpress level
  • 小程序运营主要做什么seo技术 如何优化网站内部结构
  • 事业单位网站建设算固定资产吗flash网站的优势
  • 鲜花网站建设规划书物业管理系统的设计与实现
  • 怎么用wordpress建立自己的网站吗自己做的视频可以同时上传到几家网站
  • 北京网站建设价钱河南省今天刚刚人事调整最新
  • 做一个电商网站步骤小程序文档
  • 网站的欢迎页怎么做移动应用开发专业介绍
  • 企业网站推广制作教程网站该怎么找
  • 昆明城乡和住房建设局网站山东省建设招标信息网站
  • 网站运营和推广网站开发技术孵化
  • c 2015 做网站赣榆网站建设
  • 泗水做网站ys178个人博客登录首页
  • 网站域名哪里买企业邮箱格式