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

做网站建设工资高吗整站优化系统厂家

做网站建设工资高吗,整站优化系统厂家,太原手机微网站建设,做童装在哪个网站做广告本博客全是来自于黑马程序员的mysql专题,我写的笔记 索引 是帮助Mysql高效获取数据的数据结构(有序) 数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,…

本博客全是来自于黑马程序员的mysql专题,我写的笔记

索引

是帮助Mysql高效获取数据的数据结构(有序)

数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

在一个数据库中,简单的一个数据库,如:

执行一个语句

select * from users where age = 27

 有索引的情况下(以二叉树为例,会对age这个字段建立一个二叉树的索引结构),从而大大的提高查询的效率。

如果没有索引的情况下,那就需要进行全表扫描。

不同的存储引擎拥有不同的索引

不同的存储引擎对不同的索引的支持情况

正常情况下的索引,通常指代的是B+tree索引。

 关于二叉树

传统上的二叉树存在的问题

如果主键采用的是顺序存储的时候,会形成一个单向链表,性能会大大降低,

大数据量的情况下,层级较深,检索速度慢。

在MySQL中常用的是B+tree和hash算法进行查询

B-Tree树

B树是一种多叉路衡查找树,相对于二叉树,B树每个节点可以有多个分支,即多叉。
以一颗最大度数(max-degree)为5(5阶)的b-tree为例,那这个B树每个节点最多存储4个key,5
个指针:(树的度数指的是一个节点的子节点个数。)

B+Tree

B+Tree是B-Tree的变种,我们以一颗最大度数(max-degree)为4(4阶)的b+tree为例。

B+Tree 与 B-Tree相比,主要有以下三点区别:

所有的数据都会出现在叶子节点。
叶子节点形成一个单向链表。
非叶子节点仅仅起到索引数据作用,具体的数据都是在叶子节点存放的。

MySQL索引数据结构对经典的B+Tree进行了优化。在原B+Tree的基础上,增加一个指向相邻叶子节点
的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能,利于排序。

hash索引

哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。

如果两个(或多个)键值,映射到一个相同的槽位上,他们就产生了hash冲突(也称为hash碰撞),可以通过链表来解决。

特点
A. Hash索引只能用于对等比较(=,in),不支持范围查询(between,>,< ,...)
B. 无法利用索引完成排序操作
C. 查询效率高,通常(不存在hash冲突的情况)只需要一次检索就可以了,效率通常要高于B+tree索

 在MySQL中,支持hash索引的是Memory存储引擎。 而InnoDB中具有自适应hash功能,hash索引是
InnoDB存储引擎根据B+Tree索引在指定条件下自动构建的。

为什么InnoDB存储引擎选择使用B+Tree索引结构

a、相对于二叉树,层级更少,搜索效率高

b、对于B+tree ,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低。

c、相对于hash索引,B+tree支持范围匹配及排序操作。

索引分类

在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。

而在在InnoDB存储引擎中,根据索引的存储形式,又可以分为以下两种:

聚集索引选取规则:
如果存在主键,主键索引就是聚集索引。

如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索
引。

思考题:
以下两条SQL语句,那个执行效率高? 为什么?
A. select * from user where id = 10 ;
B. select * from user where name = 'Arm' ;
备注: id为主键,name字段创建的有索引;
解答:
A 语句的执行性能要高于B 语句。
因为A语句直接走聚集索引,直接返回数据。 而B语句需要先查询name字段的二级索引,然
后再查询聚集索引,也就是需要进行回表查询。

InnoDB主键索引的B+tree高度为多高呢?
一行数据大小为1k,一页中可以存储16行这样的数据。InnoDB的指针占用6个字节的空
间,主键即使为bigint,占用字节数为8。
高度为2:
n * 8 + (n + 1) * 6 = 16*1024 , 算出n约为 1170
1171* 16 = 18736
也就是说,如果树的高度为2,则可以存储 18000 多条记录。
高度为3:
1171 * 1171 * 16 = 21939856
也就是说,如果树的高度为3,则可以存储 2200w 左右的记录。

以一个数据库为例子

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...)
[USING BTREE | HASH]
[COMMENT 'string'];

name字段为姓名字段,该字段的值可能会重复,为该字段创建索引

create index idx_user_name on tb_user(name);

phone 手机号字段的值是非空的,唯一的,为该字段创建唯一索引

create unique index idx_user_phone on tb_user(phone);

为profession,age, status创建联合索引

create index idx_user_pro_age_sta on tb_user(profession,age,status);

为email建立合适的索引来提升查询效率

create index idx_user_email on tb_user(email);

查看数据库的所有索引数据

show index from tb_user;

# 关于删除次数
show global  status  like 'com_delete';
# 关于添加次数
show global  status  like 'com_insert';
# 关于查询次数
show global  status  like 'com_select';
# 关于修改次数
show global  status  like 'com_update';

如何开启慢查询

查看

show variables  like 'slow_query_log'

会得到

slow_query_log,OFF
 

这是由于慢查询没有打开

先关闭mysql,改配置文件

slow_query_log=1
long_query_time=2

然后重启

systemctl restart mysqld
#开启profile功能
set profiling =1;
#查看每一条sql的执行耗时情况
show profiles ;
#查看指定query_id的sql的耗时情况
show profile for query query_id;
#查看指定query_id的sql语句cpu的使用情况
show profile cpu for query  query_id;

explain

EXPLAIN 或者 DESC命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序。

语法规则

在所执行的查询语句面前加上explain / desc

http://www.ds6.com.cn/news/99518.html

相关文章:

  • 做网站大记事代码承德网络推广
  • 许昌永诚网络科技有限公司企业seo优化服务
  • 网站备案入口pageadmin建站系统
  • 当当网网站开发计划和预算seo搜索优化技术
  • 网页制作与网站建设教程谷歌官方seo入门指南
  • 网站建设公司销售招聘seo外贸公司推广
  • 桂林网百度seo优化教程免费
  • html5在线制作网站模板百度网络优化
  • 关于公司建网站天猫店铺申请条件及费用
  • 长沙房地产公司有哪些西安seo服务培训
  • 可以做进销存的网站系统百度一下电脑版首页
  • 网站开发4k分辨率东莞网络推广哪家公司奿
  • 做淘宝客需要建网站吗百度网站快速优化
  • 腕表手表网站哪里可以接广告
  • 网站用axure做的rp格式个人微信管理系统
  • 做网站一般哪里找乔拓云智能建站
  • 怎么做网站程序下载浏览器
  • 网站怎么做备案号超链接搜索引擎营销是什么意思
  • wordpress主题动态百度seo关键词优化方案
  • 做豆腐交流经验的网站站长工具黄
  • 做qq群排名的网站是否违规网络口碑推广公司
  • 做诚信通谁给做网站加强网络暴力治理
  • 广州哪家做网站还可以如何免费注册网站
  • 西安哪里做网站最大seo推广怎么做
  • 网站建设属于什么费用百度云手机登录入口
  • 做网站的难点是什么中国seo网站
  • 医疗类网站哪家做的好厦门seo培训
  • 做简单网站需要学什么百度搜图
  • 做网站的人还能做什么社群营销的方法和技巧
  • wordpress自动播放视频广州网站seo公司