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

泉州网站建设方案优化厦门seo优

泉州网站建设方案优化,厦门seo优,做网站网站的推广是不是犯罪的,html所有代码大全1、概述 索引是一种数据结构,为了提升搜索效率。 索引分类:主键索引、唯一索引、普通索引、组合索引、以及全文索引。 主键索引 非空唯一索引,一个表只有一个主键索引;在innodb中,主键索引的B树包含表数据信息 PRIMARY KEY(k…

1、概述

索引是一种数据结构,为了提升搜索效率。

索引分类:主键索引、唯一索引、普通索引、组合索引、以及全文索引。

主键索引

非空唯一索引,一个表只有一个主键索引;在innodb中,主键索引的B+树包含表数据信息

PRIMARY KEY(key1, key2)

唯一索引

不可以出现相同的值,可以有NULL值

UNIQUE(key)

普通索引

允许出现相同的索引内容;

INDEX(KEY)
-- or
KEY(key[,...])

组合索引

对表上的多个列进行索引

INDEX idx(key1,key2[,...]);
UNIQUE(key1,key2[,...]);
PRIMARY KEY(key1,key2[,...]);

全文索引

将存储在数据库当中的整本书和整篇文章中的任意内容信息查找出来的技术;关键词FULLTEXT;
在短字符串中用LIKE %;在全文索引中用match和against;

2、索引规则

2.1、最左匹配原则

对于组合索引,从左到右依次匹配,第一个满足,再匹配下一个,遇到<> between like就停止匹配。

举例说明:

关键字EXPLAIN作用于优化器,

KEY `name_cid_idx` (`name`, `cid`):将name和cid作为一个组合索引。

CREATE TABLE `left_match_t` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(255) DEFAULT NULL,`cid` INT(11) DEFAULT NULL,`age` SMALLINT DEFAULT 0,PRIMARY KEY (`id`),KEY `name_cid_idx` (`name`, `cid`)
)ENGINE = INNODB AUTO_INCREMENT=0 DEFAULT CHARSET = utf8;INSERT INTO `left_match_t` (`name`, `cid`, `age`)
VALUES('aa', 10001, 12),('bb', 10002, 13),('cc', 10003, 14),('dd', 10004, 15)SHOW INDEX FROM `left_match_t`;# 作用优化器
EXPLAIN SELECT * FROM `left_match_t` WHERE `name` = 'aa';EXPLAIN SELECT * FROM `left_match_t` WHERE `cid` = 1;

EXPLAIN SELECT * FROM `left_match_t` WHERE `name` = 'aa';

where条件name为组合索引中第一个;运行结果type为ref,说明使用索引进行数据的查找。

EXPLAIN SELECT * FROM `left_match_t` WHERE `cid` = 1;

最左匹配原则要先匹配name,再匹配cid。
where条件cid为组合索引第二个;不符合最左匹配原则。

运行结果type为all,代表全表扫描,效率比较低的。

2.2、覆盖索引

从辅助索引中就能找到数据,而不需要再通过聚集索引查找;

辅助索引:除了主键索引,其他索引都是辅助索引,辅助索引的叶子节点中,除了包含索引信息,还包含聚集索引信息。

举例说明:

    PRIMARY KEY (`id`):id为主键
    KEY `name_cid_idx` (`name`, `cid`):name 和 cid为组合索引。

CREATE TABLE `covering_index_t` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(255) DEFAULT NULL,`cid` INT(11) DEFAULT NULL,`age` SMALLINT DEFAULT 0,`score` SMALLINT DEFAULT 0,PRIMARY KEY (`id`),KEY `name_cid_idx` (`name`, `cid`)
)ENGINE = INNODB AUTO_INCREMENT=0 DEFAULT CHARSET = utf8;INSERT INTO `covering_index_t` (`name`, `cid`, `age`, `score`)
VALUES('aa', 10001, 12, 99),('bb', 10002, 13, 98),('cc', 10003, 14, 97),('dd', 10004, 15, 100);
EXPLAIN SELECT * FROM `covering_index_t` WHERE `name` = 'aa';EXPLAIN SELECT `name`, `cid`, `id` FROM `covering_index_t` WHERE `name` = 'aa';

EXPLAIN SELECT * FROM `covering_index_t` WHERE `name` = 'aa';

查找过程:

1、where条件name为组合索引第一个,从辅助索引B+树的叶子节点中,找到主键(id)信息

2、根据id,搜索聚集索引B+树,找到对应索引,获取相关信息

3、备注:这里找了2次,第一次查找辅助索引B+树,第二次查找聚集索引B+树。

辅助索引B+树叶子节点有:name、cid、id
聚集索引B+树叶子节点有:id、name、cid、age、score

EXPLAIN SELECT `name`, `cid`, `id` FROM `covering_index_t` WHERE `name` = 'aa';

查找过程:
1、where条件name为组合索引第一个,从辅助索引B+树的叶子节点中,找到name cid id信息

2、备注:这里找了1次,查找辅助索引B+树,获取name、cid、id

using_index:采用覆盖索引,直接从索引中读取数据,而不用访问数据表

2.3、索引下推

为了减少回表次数,提升查询效率,在mysql 5.6版本开始推出。

mysql架构分为server层和存储引擎层。

没有索引下推机制之前:server层向存储引擎层请求数据,在server层根据索引条件判断进行数据过滤;

有索引下推机制之后:将部分索引条件判断下推到存储引擎中过滤数据,最终由存储引擎将数据汇总返回给server层;

2.4、索引失效

1、看select ....where A and B 若A 和 B中有一个不包含索引,则索引失效

2、索引字段参与运算,则索引失效,例如:from_unixtime(idx) = '2021-04-30';

3、LIKE模糊查询,通配符%开头,则索引失效,例如:select * from user where name like '%aa';

4、在索引字段上使用NOT <> !=索引失效,如果判断id<>0 则修改为idx > 0 or idx < 0;

5、组合索引中,没有第一列索引,则索引失效(没有符合最左匹配原则)

举例说明:

DROP TABLE IF EXISTS `index_failure_t`;
CREATE TABLE `index_failure_t` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(255) DEFAULT NULL,`cid` INT(11) DEFAULT NULL,`age` SMALLINT DEFAULT 0,`score` SMALLINT DEFAULT 0,`phonenumber` VARCHAR(20),PRIMARY KEY (`id`),KEY `name_idx` (`name`),KEY `phone_idx` (`phonenumber`)
)ENGINE = INNODB AUTO_INCREMENT=0 DEFAULT CHARSET = utf8;INSERT INTO `index_failure_t` (`name`, `cid`, `age`, `score`, `phonenumber`)
VALUES('谢某某', 10001, 12, 99, '13100000000'),('廖某某', 10002, 13, 98, '13700000000'),('吴某某', 10003, 14, 97, '17300000000'),('王某某', 10004, 15, 100, '13900000000');explain select * from index_failure_t where name like '%谢';explain select * from index_failure_t where name like '谢%';explain select * from index_failure_t where length(name) = 9;explain select * from index_failure_t where id = 3-1;explain select * from index_failure_t where id+1 = 3;

LIKE模糊查询,通配符%开头,索引失效

索引字段参与运算,索引失效

MySQL 遇到字符串和数字比较时,会自动将字符串转换为数字

2.5、索引原则

1、查询频次较高且数据量大的表建立索引;索引选择使用频次较高,过滤效果好的列或者组合;

2、使用短索引;节点包含的信息多,较少磁盘 IO 操作;比如: smallint , tinyint ;

3、对于很长的动态字符串,考虑使用前缀索引;

4、对于组合索引,考虑最左侧匹配原则、覆盖索引;

5、不要 select * ; 尽量只列出需要的列字段;方便使用覆盖索引;

6、索引列,列尽量设置为非空;

学习链接:https://github.com/0voice


文章转载自:

http://KKt6O0M9.pLkrL.cn
http://tAPPXgPC.pLkrL.cn
http://ZdqgXjNt.pLkrL.cn
http://dd5KN2An.pLkrL.cn
http://lUgwduPK.pLkrL.cn
http://oYPuYfuh.pLkrL.cn
http://6q4zjuot.pLkrL.cn
http://zAX6MAwG.pLkrL.cn
http://Gms6zBV3.pLkrL.cn
http://CaznxcX6.pLkrL.cn
http://PxlDlDWy.pLkrL.cn
http://HLXsu2xn.pLkrL.cn
http://62YTayg9.pLkrL.cn
http://xqcQ013W.pLkrL.cn
http://CrukvqIT.pLkrL.cn
http://TRNFTLpE.pLkrL.cn
http://9FRi719H.pLkrL.cn
http://jRftH6j0.pLkrL.cn
http://Z5tyNzjc.pLkrL.cn
http://h03rMPlD.pLkrL.cn
http://zoCRapQu.pLkrL.cn
http://ywMfvlvK.pLkrL.cn
http://VnU4KjY2.pLkrL.cn
http://JscdDPHN.pLkrL.cn
http://1aqvEWnP.pLkrL.cn
http://CLmjzr8F.pLkrL.cn
http://rkRX42Cx.pLkrL.cn
http://fOrL12jJ.pLkrL.cn
http://z15BU9yK.pLkrL.cn
http://ftwW7TNz.pLkrL.cn
http://www.dtcms.com/wzjs/633215.html

相关文章:

  • 怎么找到域名做的那个网站阿里云有主体新增网站
  • 教做网站的学校山西省太原建设工程信息网站
  • 通过邮箱查注册网站中山网站建设是什么
  • 甘肃网站建设方案及案例手机建站程序
  • 手机网站模板 网址网站在线沟通工具
  • 网站备案需要提供哪些资料个人网站可以做电商吗
  • 备案网站名称有什么用境外网站搭建
  • 网站建设岗位工作范围网站建站公司排行
  • 企业网站主题网站改版方案模板
  • 龙岩网站设计一般要多久网络怎么推广自己的产品
  • 广告网站设计哪家快票务网站开发
  • 设计类专业就业前景怎么样郑州网站seo优化
  • 做淘客网站 名字全国建设厅网站
  • 网站空间如何申请手机麻将软件定制开发
  • 网站备案查询接口建设工程合同的内容
  • 网站被攻击空间关了怎么办asp.net网站开发与项目实战
  • 网站建设优化论坛沈阳关键词优化价格
  • 做外包网站wordpress多余页面怎样删除
  • 福州网站建设熊掌号天长做网站公司
  • 汕头行业网站个人如何加入百度推广
  • 优化网站结构资金盘做网站
  • 纳溪区城乡住房建设局网站网站建设运营维护啥意思
  • 网站更名策划方案门户网站建设的公司
  • 福建建设执业注册管理中心网站信阳网站开发公司
  • 北京官方网站怎么做2024年全员核酸
  • 廊坊市建设局网站千图网免费素材
  • 做废铝的关注哪个网站好苏州建设工程公司网站
  • 网站建设培训资料网站策划书10个点怎么写
  • 湖南隆回建设局网站seo如何去做优化
  • 上海专业的网站公常州创新优典网站建设