zoukankan      html  css  js  c++  java
  • 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添加主键的方式如果数据量

    过大的时候,添加时会比较慢,但是创建完成后使用主键索引查找数据就会非常快。

    删除主键的方式: alter table t5 change id id int primary key

           alter table t5 drop primary key

    唯一索引(unique) :加快查询速度,不能重复  在创建方式上也有两种方式:在创建表的时候添加,第二种方式是

    根据实际需要再添加唯一索引

    第二种方式添加唯一索引:create unique index 索引名称 on 表名

    删除索引: alter table t5 id id int auto_incerment primary key

    联合唯一索引(unique(列名1,列名2)):加快查询速度,生成的数据组合不能重复出现第二次创建方式上和前面两种一样。

    第二种添加索引方式:create  unique index 索引名称 on 表名

    删除索引 :drop  index 索引名 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:programmysql-5.6.44-winx64dataoldboy-slow.log

    普通日志记录

    SQL审计 :记录sql的操作语句


    show variables like '%general%';
    +------------------+------------------------------------------------+
    | Variable_name | Value |
    +------------------+------------------------------------------------+
    | general_log | ON |
    | general_log_file | E:programmysql-5.6.44-winx64dataoldboy.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;

  • 相关阅读:
    学习进度条
    软件工程---课程设计总结
    软件工程----课程总结
    操作系统--实验四
    软件工程---阅读《构建之法》P384~391
    软件工程---阅读《构建之法》第8、9、10章读后感
    操作系统---实验三 进程调度模拟程序
    软件工程--- 阅读《构建之法》第6~7章
    转载---CSS3实现曲线阴影和翘边阴影
    转载---QRcodeJS生成二维码
  • 原文地址:https://www.cnblogs.com/1624413646hxy/p/11042023.html
Copyright © 2011-2022 走看看