首页 > 数据库 >MySQL知识点

MySQL知识点

时间:2022-09-21 22:01:47浏览次数:70  
标签:知识点 存储 CHAR 索引 InnoDB MyISAM MySQL 节点

VARCHAR、CHAR

  • VARCHAR使用额外1或2个字节存储字符串长度。列长度小于255字节时,使用1字节表示,否则使用2字节表示。
  • VARCHAR存储的内容超出设置的长度时,内容会被截断。
  • CHAR是定长的,根据定义的字符串长度分配足够的空间。
  • CHAR会根据需要使用空格进行填充方便比较。
  • CHAR适合存储很短的字符串,或者所有值都接近同一个长度。
  • CHAR存储的内容超出设置的长度时,内容同样会被截断。
  • 对于经常变更的数据来说,CHAR比VARCHAR更好,因为CHAR不容易产生碎片。
  • 对于非常短的列,CHAR比VARCHAR在存储空间上更有效率。

MyISAM索引与InnoDB索引的区别?

  • InnoDB索引是聚簇索引,MyISAM索引是非聚簇索引。

  • InnoDB的主键索引的叶子节点存储着行数据,因此主键索引非常高效。

  • MyISAM索引的叶子节点存储的是行数据地址,需要再寻址一次才能得到数据。

  • InnoDB非主键索引的叶子节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会非常高效。

  • MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。

  • InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。

  • 对join语句匹配关系(on)涉及的字段建立索引能够提高效率

索引覆盖

  • 如果要查询的字段都建立过索引,那么引擎会直接在索引表中查询而不会访问原始数据(否则只要有一个字段没有建立索引就会做全表扫描),这叫索引覆盖。

百万级别或以上的数据如何删除

  1. 知删除数据的速度和创建的索引数量是成正比的。
  2. 先删除索引,再删除数据,之后建立索引
  3. 如果不删除索引,删除中断,一切删除会回滚

B树和B+树的区别

属性 B树 B+树
节点 将键和值存放在内部节点和叶子节点 内部节点都是键,没有值,叶子节点同时存放键和值
叶子节点联系 叶子节点各自独立 叶子节点有一条链相连
检索方式 随机检索 随机检索和顺序检索
把频繁访问的数据放在靠近根节点的地方将会大大提高热点数据的查询效率。这种特性使得B树在特定数据重复多次查询的场景中更加高效。
当需要进行一次全数据遍历的时候,B+树只需要使用O(logN)时间找到最小的一个节点,然后通过链进行O(N)的顺序遍历即可,而B树则需要对树的每一层进行遍历。
B+树空间利用率更高,可减少I/O次数,磁盘读写代价更低。

标签:知识点,存储,CHAR,索引,InnoDB,MyISAM,MySQL,节点
From: https://www.cnblogs.com/sleepyheadLK/p/16717295.html

相关文章

  • MySQL 常用30种SQL查询语句优化方法
    1、应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列......
  • springboot+Flink(读取kafka并存入Mysql)20220921
    1、mysql数据库test 2、kafka创建主题student  3、pom.xml<properties><java.version>1.8</java.version><project.build.sourceEncod......
  • 本地windows上的SQLog 连接内网 docker上的mysql
    1进入docker记下我的映射端口号12345  dockerexec-itda9aad4acad8sh 2登陆账号mysql-uroot-h127.0.0.1-P3306-p密码默认123456 3开启远......
  • MySQL索引查询条件使用函数导致索引失效
     索引失效EXPLAINSELECTdt.nameASdeviceName,su.`name`ASuserName,date_format(co.upload_time,'%Y%m%d')astimeFROMtb_cust_ordercoI......
  • mysql日期时间-加减、查询
    --加1天selectdate_add(now(),interval1day);--加1小时selectdate_add(now(),interval1hour);--加1分钟selectdate_add(now(),interval1minute);......
  • 【Mysql】索引类型及对数据库性能的影响
     普通索引:允许被索引的数据列包含重复的值。唯一索引:可以保证数据记录的唯一性。主键:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使......
  • MySQL学习——执行计划
    MySQL中可以通过explain关键字模拟优化器执行SQL语句,从而知道MySQL是如何处理SQL语句的,这将有利我们做代码的优化。1、MySQL查询执行过程客户端向MySQL服务器发送一......
  • MySQL学习——分页查询
    在Orcale中我们也介绍过了使用内建视图和rownum来实现分页的操作(Oracle学习——视图、序列、索引),而MySQL有更加方便的实现分页查询的操作。1、LIMIT语法格式SELECT......
  • MySQL查看数据库表容量大小
    1.查看所有数据库容量大小selecttable_schemaas'数据库',sum(table_rows)as'记录数',sum(truncate(data_length/1024/1024,2))as'数据容量(MB)',sum(truncate......
  • MySQL主从同步详解与配置
    MySQL主从同步详解与配置走鹿带凨爱生活,有理想,善思考,能沟通 21人赞同了该文章 https://zhuanlan.zhihu.com/p/335142300MySQL主从同......