mysql创建索引

mysql 索引笔记

怎甘沉沦 提交于 2019-12-05 05:17:35
MyISAM引擎的B+Tree的索引 通过上图可以直接的看出, 在MyISAM对B+树的运用中明显的特点如下: 所有的非叶子节点中存储的全部是索引信息 在叶子节点中存储的 value值其实是 数据库中某行数据的index MyISAM引擎 索引文件的查看: 在 /var/lib/mysql目录中 .myd 即 my data , 数据库中表的数据文件 .myi 即 my index , 数据库中 索引文件 .log 即 mysql的日志文件 InnoDB引擎 索引文件的查看: 同样在 /var/lib/mysql 目录下面 InnoDB引擎的B+Tree的索引 InnoDB的实现方式业内也称其为 聚簇索引 , 什么是聚簇索引呢? 就是相邻的行的简直被存储到一起, 对比上面的两幅图片就会发现, 在InnDB中, B+树的叶子节点中存储的是数据行中的一行行记录, 缺点: 因为索引文件被存放在硬盘上, 所以很占硬盘的空间 一般我们会在每一个表中添加一列 取名 id, 设置它为primary key , 即将他设置成主键, 如果使用的存储引擎也是InnoDB的话, 底层就会建立起主键索引, 也是聚簇索引, 并且会自动按照id的大小为我们排好序,(因为它的一个有序的树) 点击查看 参考博文1 局部性原理 局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据

MySQL SQL语句

我怕爱的太早我们不能终老 提交于 2019-12-05 05:07:05
须知: SQL语言:结构化查询语言,是关系型数据库查询语言的标准,不同的数据库虽然有自己私有扩展,但关键词都支持:(select、update、delete、insert、where) SQL语句分类:像Oracle、MSSQL都是通用的 DDL:数据定义语言(create、alter、drop、rename) DML:数据库维护语言(select、insert、update、delete) DCL:数据库控制语言,权限(Grant、revoke) TCL:事务控制语言(commt、sarepqint):新型的语句 一、数据库增删改查 根据这个表结构以下来操作: mysql> select * from user; +----+----------+------+ | id | name | pass | +----+----------+------+ 基本操作 1.创建数据库 create database name; 2.删除数据库 drop database name; 3.创建一个用户表 create table user(id int,name varchar(30),pass varchar(30)); 4.插入数据 insert into user(id,name,pass) values("1","zhangsan","123"); 5.删除一个表 drop

mysql 的索引

本小妞迷上赌 提交于 2019-12-05 04:30:26
1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容。 2)让获取的数据更有目的性,从而提高数据库检索数据的性能。 1.索引的类型 1)BTREE:B+树索引 (Btree B+tree B*tree) 2)HASH:HASH索引 hash key 3)FULLTEXT:全文索引 4)RTREE:R树索引 ​ Btree索引 比如 我要搜索一个数字 38 这时要走3次IO 然后在搜索一个>38 <70 的数字 这时要走9次IO ​ B+tree算法 比如 我要搜索一个数字 38 这时要走3次IO 然后在搜索一个>38 <70 的数字 这时要走6次IO 注意 他是不走指针的 里面的Q代表指针 好处:1。优化了范围查询 2.在叶子节点添加了相邻节点的指针 ​ B*tree 比如 我要搜索一个数字 38 这时要走3次IO 然后在搜索一个>38 <70 的数字 这时要走2次IO 注意 他是不走指针的 里面的Q代表指针 而且他只在枝节点上找 好处:在枝节点添加了相邻 节点的指针 2.索引管理 1.索引必须添加在列上面 2.在where后面接上建立索引的列,会加快查询速度 3.pages<---索引(属性)<----查数据。 3.索引的分类 主键索引(primary key) 普通索引 ***(key) 唯一索引(unique key) 4.添加索引 1普通索引 #创建索引:alter

SQL 相关

不打扰是莪最后的温柔 提交于 2019-12-05 04:28:08
数据库:保管数据的仓库,以及数据管理的方法和技术。 数据库的特点:实现数据共享,减少数据冗余; 采用特定的数据类型; 具有较高的数据独立性;具有统一的数据控制功能; 数据库系统主要组成部分: 数据库、数据库管理系统、数据库应用程序。 SQL = Structured Query Language 结构化查询语言 SQL 和 NoSQL = 关系型数据库 和 非关系型数据库 mysql优势:运行速度快 免费 复杂程度较低,易于学习 跨平台可移植 丰富的接口 支持查询语言。。 终端连接数据库: mysql -u用户名 -p密码 -h连接主机 -P端口 比较重要的存储引擎: InnoDB MyISAM 另外还有: Memory Archive ----show engines:查看所有存储引擎 InnoDB 支持事务,行级别锁,外键,mysql的默认存储引擎 MyISAM 仓库引擎/存储引擎,增删改比较快 修改表名:alter table 旧表名 rename 新表名; 修改字段的数据类型:alter table 表名 modify 字段名 数据类型; 修改字段名:alter table 表名 change 旧字段名 新字段名 数据类型; 添加字段:alter tabale 表名 add 新字段名 数据类型; 删除字段:alter table 表名 drop 字段名; 修改字段的排列位置

MySQL使用规范手册

允我心安 提交于 2019-12-05 04:20:22
背景 一个平台或系统随着时间的推移和用户量的增多,数据库操作往往会变慢;而在Java应用开发中数据库更是尤为重要,绝大多数情况下数据库的性能决定了程序的性能,如若前期埋下的坑越多到后期数据库就会成为整个系统的瓶颈;因此,更规范化的使用MySQL在开发中是不可或缺的。 一、MySQL数据库命名规范 1、数据库所有表前缀均使用项目名称首字母缩写; 2、数据库所有对象名称均使用小写字母,并且单词之间通过下划线分开; 3、数据库所有对象名称禁止使用MySQL保留字及关键字,涉及到关键字的SQL查询需要将关键字用单引号括起来; 4、数据库所有对象名称不超过32个字符,并且命名要遵循见名知意原则; 5、数据库临时表必须以 pro_tmp_ 为前缀并且以日期 20190917 为后缀,备份表必须以 pro_bac 为前缀并以时间戳为后缀;(pro为项目名称首字母缩写) 6、数据库所有存储相同数据的列名和列类型必须保持一致。 二、MySQL数据库基本设计规范 1、若无特殊说明,建表时一律采用Innodb存储引擎。 选择合适的引擎可以提高数据库性能,如InnoDB和MyISAM,InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定; 基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持;MyISAM类型的表强调的是性能

第二章Redis管理实战

99封情书 提交于 2019-12-05 04:10:02
阅读目录(Content) 一、数据类型 二、管理实战 1.通用操作 2.strings(字符)类型操作 3.hash(字典)类型操作 4.List(列表)类型操作 5.Set(集合)类型操作 6.Sorted-Set(有序集合)类型操作 回到顶部(go to top) 一、数据类型 String: 字符串类型 Hash: 哈希类型 List: 列表类型 Set: 集合类型 Sorted set: 顺序集合类型 回到顶部(go to top) 二、管理实战 1.通用操作 #查看所有的key 127.0.0.1:6379> KEYS * 1) "age" 2) "name" #判断key是否存在 127.0.0.1:6379> EXISTS name (integer) 1 #变更key名 127.0.0.1:6379> RENAME age nianling #查看key的类型 127.0.0.1:6379> type name string #删除key 127.0.0.1:6379> del name (integer) 1 #以秒为单位设置生存时间 127.0.0.1:6379> EXPIRE name 10 (integer) 1 #以毫秒为单位设置生存时间 127.0.0.1:6379> PEXPIRE name 10000 (integer) 1 #取消剩余生存时间

MySQL用B+树做索引

非 Y 不嫁゛ 提交于 2019-12-05 03:15:26
索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。 索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在mysql数据库中分三类: B+树索引、Hash索引、全文索引 我们今天要介绍的是工作开发中最常接触到innodb存储引擎中的的B+树索引。 要介绍B+树索引,就不得不提二叉查找树,平衡二叉树和B树这三种数据结构。B+树就是从他们仨演化来的。 二叉查找树 首先,让我们先看一张图  从图中可以看到,我们为user表(用户信息表)建立了一个二叉查找树的索引。图中的圆为二叉查找树的节点,节点中存储了键(key)和数据(data)。 键对应user表中的id,数据对应user表中的行数据。二叉查找树的特点就是 任何节点的左子节点的键值都小于当前节点的键值,右子节点的键值都大于当前节点的键值。 顶端的节点我们称为根节点,没有子节点的节点我们称之为叶节点。 如果我们需要查找id=12的用户信息,利用我们创建的二叉查找树索引,查找流程如下: 1.

mysql 入门练习

心不动则不痛 提交于 2019-12-05 03:10:31
//登录和退出数据库1:mysql -u root -p//输入密码2: exit3: mysql -u root -p //数据库创建,删除,进入数据库4:CREATE DATABASE `testdatabase`;5: CREATE DATABASE `testdatabase`;6:DROP DATABASE `testdatabase`;7: CREATE DATABASE `testdatabase`;8: USE testdatabase;9: CREATE DATABASE `testdatabase2`;10: USE DATABASE testdatabase2;11: USE `testdatabase2`;12: USE `testdatabase`;13: DROP DATABASE `testdatabase2`; //表的创建和删除,创建表同时设置属性14: CREATE TABLE table1;15: CREATE TABLE table1(No INT);16: CREATE TABLE table2 (No INT,name VARCHAR(20),sex boolean);17: DROP TABLE table1,table2;18: CREATE TABLE tt1 (id INT(11) primary key);19: CREATE

MySQL架构

帅比萌擦擦* 提交于 2019-12-05 03:01:41
一、MySQL架构 第一层,即最上一层 ,所包含的服务并不是MySQL所独有的技术。它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等。 第二层值得关注 。这是MySQL的核心部分。通常叫做 SQL Layer。在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断, sql解析,行计划优化, query cache 的处理以及所有内置的函数(如日期,时间,数学运算,加密)等等。各个存储引擎提供的功能都集中在这一层,如存储过程,触发器,视 图等。 第三层包括了存储引擎 。通常叫做StorEngine Layer ,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。它们负责存储和获取所有存储在MySQL中的数据。就像Linux众多的文件系统 一样。每个存储引擎都有自己的优点和缺陷。服务器是通过存储引擎API来与它们交互的。这个接口隐藏 了各个存储引擎不同的地方。对于查询层尽可能的透明。这个API包含了很多底层的操作。如开始一个事 物,或者取出有特定主键的行。存储引擎不能解析SQL,互相之间也不能通信。仅仅是简单的响应服务器 的请求。 连接管理和安全 在服务器内部,每个client连接都有自己的线程。这个连接的查询都在一个单独的线程中执行。这些线程轮流运行在某一个CPU内核(多核CPU)或者CPU中。服务器缓存了线程

SQL语句优化

一个人想着一个人 提交于 2019-12-05 02:35:27
SQL语句优化 怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引。   建立索引不是建的越多越好,原则是:   第一:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验,一个表的索引最多不能超过6个,因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作。   第二:建立索引的方法论为:   多数查询经常使用的列;   很少进行修改操作的列;   索引需要建立在数据差异化大的列上   利用以上的基础我们讨论一下如何优化sql. 1、sql语句模型结构优化指导     a. ORDER BY + LIMIT组合的索引优化       如果一个SQL语句形如:SELECT [column1],[column2],…. FROM [TABLE] ORDER BY [sort] LIMIT [offset],[LIMIT];       这个SQL语句优化比较简单,在[sort]这个栏位上建立索引即可。     b. WHERE + ORDER BY + LIMIT组合的索引优化       如果一个SQL语句形如:SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] = [VALUE] ORDER BY