MySQL存储引擎 和索引
在MySQL中存储引擎有Innodb 和 MyIsam 两种
Innodb :默认使用的版本5.5 及以上,支持事务,不支持全文索引,索引和数据都存在一个文件,.ibd 表结构存在.frm文件中
MyIsam:默认使用的版本5.5 以下,不支持事务,支持全文索引, frm 存表结构,.MYD 存表数据, .MYI存表索引
全文索引使用sphinx
索引
加快查询速度
可以与新华字典的目录做一个类比,将索引理解成一个特殊的文件,没有索引的话查询数据是从前向后查找的,有了这个索引的话他是根据一个特殊的数据结构(二叉树)去查找数据。
索引分类(primary key):
主键索引: 加快查询 主键不能重复,不能为空,
主键索引添加有两种方式:在创建表的时候添加进去,第二种方法就是在创建表之后,数据添加完成以后根据实际项目需要来添加主键 : alter table 表名 change id id int auto_increment primary key .这种i添加主键的方式如果数据量
过大的时候,添加时会比较慢,但是创建完成后使用主键索引查找数据就会非常快。
删除主键的方式: drop primary key on 表名
唯一索引(unique) :加快查询速度,不能重复 在创建方式上也有两种方式:在创建表的时候添加,第二种方式是
根据实际需要再添加唯一索引
第二种方式添加唯一索引:create unique index 索引名称 on 表名
删除索引: drop 索引名称 on 表名
联合唯一索引(unique(列名1,列名2)):加快查询速度,生成的数据组合不能重复出现第二次创建方式上和前面两种一样。
第二种添加索引方式:create unique index 索引名称 on 表名
删除索引 :drop 索引名 on 表名
普通索引(index):加快查询速度,创建方式如上
第二中方式创建: create index 索引名 on 表名
删除索引 : drop 索引名 on 表名
索引的添加有讲究的,频繁使用的列上可以添加索引,索引添加太多也不好,在版本低的MySQL数据库上,索引添加过多在对数据操作时,如更新删除的话,索引会进行重新排序,索引过多就会占用大量时间。版本高的话影响似乎不大。
索引的使用
explain 是一个查看是否使用索引和sql语句执行索引效率的小工具。会生成一个报告可以查看使用索引的情况和执行效率。
sql语句使用规则:不建议使用like进行搜索,会用不到索引,
组合索引最左前缀:会按照左边的来查找,如果只使用右边的索引来查找,就不会是使用索引
慢日志查询:将执行很慢的sql语句记录到文件中,用于后续的改进使用
开启步骤:
1 show variables like '%query%'
2 set global long_query_time=2
3 set global slow_query_log=ON
4 slow_query_log_file = E:\program\mysql-5.6.44-winx64\data\oldboy-slow.log
普通日志记录
SQL审计 :记录sql的操作语句
show variables like '%general%';
+------------------+------------------------------------------------+
| Variable_name | Value |
+------------------+------------------------------------------------+
| general_log | ON |
| general_log_file | E:\program\mysql-5.6.44-winx64\data\oldboy.log |
+------------------+------------------------------------------------+
set global general_log = ON;
权限管理:
创建用户
create user '用户名'@'IP地址' identified by '密码';
creaee user 'zekai'@'192.168.1.123' identified by '123qwe';
creaee user 'zekai'@'192.168.1.%' identified by '123qwe';
create user 'zekai'@'%' identified by '123qwe';
删除用户
drop user '用户名'@'IP地址';
修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
修改密码
set password for '用户名'@'IP地址' = Password('新密码')
授权:
grant 权限 on 数据库.表 to '用户'@'IP地址' -- 授权
grant select on db1.* to 'zekai'@'%';
grant select on *.* to 'zekai'@'%';
grant select, insert, delete on db1.* to 'zekai'@'%';
记住:
flush privileges;
原文地址:https://www.cnblogs.com/1624413646hxy/p/11042023.html
- Docker容器学习梳理-Dockerfile构建镜像
- 再谈web开中几种经典的大文件上传组件
- Nginx负载均衡中后端节点服务器健康检查的操作梳理
- Linux系统下CPU使用(load average)梳理
- 基于组件的.NET技术(5)
- Silverlight与WPF中BeginInvoke的差异
- Linux下部署SSH登录时的二次身份验证环境记录(利用Google Authenticator)
- Linux下DNS简单部署(主从域名服务器)
- 本地yum源部署记录
- silverlight4:摄像头占用状态检测以及二种截屏方法
- Flash/Flex学习笔记(16):如何做自定义Loading加载其它swf
- 台胞也能发红包喽!小编手把手教你搞定微信支付!
- 获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题)
- Docker管理工具-Swarm部署记录
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 自己实现一个VUE响应式--VUE响应式原理
- 各种CSS居中方案
- JavaScript的内存管理
- 实现自己的Vue Router -- Vue Router原理解析
- G级大文件分割器 + 核心源码
- 前端也能学算法:JS版常见排序算法-冒泡,插入,快排,归并
- 前端也能学算法:JS版链表
- 将二进制文件加入VC资源后释放执行
- JavaScript中的函数式编程
- JavaScript中的compose函数和pipe函数
- 常用JS函数-数组扁平化,缓存函数,柯里化函数,防抖和节流函数
- JavaScript单元测试及原理
- 前端进阶知识汇总
- 前端也能学算法:由浅入深讲解动态规划
- 轻松理解JS中的面向对象,顺便搞懂prototype和__proto__