MySQL数据库优化 (2)

      5. 外键:MyISAM 不支持外键, INNODB支持外键. (通常不设置外键,通常是在程序中保证数据的一致)。

    5.2.2 引擎使用场景   

       MyISAM存储引擎:

        如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎. 比如 bbs 中的 发帖表,回复表.

      INNODB存储引擎:

        对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表.

   5.2.3 添加、修改引擎

      1、创建表时指定存储引擎:

        Create table 表名(字段列表) engine 存储引擎名称;

      2、修改存储引擎

         alter table table_name engine=innodb;

六、单机优化---索引

   概念:只是一个数据结构,用于提升查询性能的,但是删除,添加,修改就相对慢了。是以空间换时间的策略。
   分类:
     普通索引:允许重复的值出现,可以在任何字段上面添加。

    唯一索引:不能有重复,可以在任何字段上面添加,可以为null,并且可以有多个null

    主键索引:唯一且没有null

    全文索引:es操作代替了数据的查询。

  6.1 Mysql常用引擎允许的索引类型

MySQL数据库优化

 

 

    hash:就像Map,通过一个key直接就能找到value。

    B-tree:使用二叉树保存索引。

MySQL数据库优化

 

 

   6.2 索引的使用  

    添加索引:

      方法一:create index index_emp_empno on emp(empno);

 

      方法二:alter table emp add index index_emp_empno(empno);

 

    查询索引:show index from emp;

 

    删除索引:alter table emp drop index index_emp_empno;

 

    修改索引:删了再加。

  6.3 适合创建索引的条件:

 

    1. 肯定在where条件经常使用,或经常排序,order by后面的字段。

 

    2. 该字段的内容不能平频繁变化。

    3. 该字段的内容不是唯一的几个值(如:sex)。

 

  6.4 创建索引的小技巧:

    根据索引列的多少区分: 

      普通索引(单列索引):该索引只在一个列上面创建。

 

      复合索引(多列索引):该索引只在多个列上面创建。

 

    6.4.1 对于创建的复合索引,如果第一个索引没有用到(dname),这个索引就没有用。  

      alter table dept add index my_indx (dname,loc);   // dname 是左边的列,loc就是右边的列

 

      explain select * from dept where dname='aaa'   // 索引有效

      explain select * from dept where loc='aaa'  // 索引无效(没有用到dname)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpgxw.html