目录 1. 数据库优化漏斗法则 1 2. 常见优化手段 2 2.1. 索引 2 2.2. 分页 只返回需要的字段 2 2.3. 批处理 2 2.4. 其他 sp 多线程等 2 3. 索引类型 n

目录

1. 数据库优化漏斗法则 1

2. 常见优化手段 2

2.1. 索引 2

2.2. 分页  只返回需要的字段 2

2.3. 批处理 2

2.4. 其他  sp 多线程等 2

3. 索引类型  normal (btree hash),unique唯一,fulltext全文索引 2

3.1. 索引生效原理 EXPLAIN  查看索引 3

3.2. 强制索引 3

 

  1. 数据库优化漏斗法则

 

  1. 常见优化手段
    1. 索引
    2.  分页  只返回需要的字段
    3. 批处理  
    4. 其他  sp 多线程等

存储过程

大量复杂运算在客户端处理

多线程

 

 

 

 

 

  1. 索引类型  normal (btree hash),unique唯一,fulltext全文索引

 

 

    1. 索引生效原理 EXPLAIN  查看索引

 

EXPLAIN SELECT

*

FROM

user_tab  force index(aa_name_age_index)

WHERE

  name='user2'  and age=18   

 

    1. 强制索引

SELECT

*

FROM

user_tab  force index(aa_name_age_index)

WHERE

  name='user2'  and age=18   

 

 

  1. MySQL使用全文索引(fulltext index)
  2. 1.创建全文索引(FullText index)

       旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。 

       不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息要随时关注官网,

  1. 3.使用全文索引

     跟普通索引稍有不同

     使用全文索引的格式:  MATCH (columnName) AGAINST ('string')

     eg:

           SELECT * FROM `student` WHERE MATCH(`name`) AGAINST('聪')

           当查询多列数据时:

                建议在此多列数据上创建一个联合的全文索引,否则使用不了索引的

          SELECT * FROM `student` WHERE MATCH(`name`,`address`) AGAINST('聪 广东')

    1.      3.1. 使用全文索引需要注意的是:(基本单位是)

            分词,全文索引以词为基础的,MySQL默认的分词是所有非字母和数字的特殊符号都是分词符

  3.2. MySQL中与全文索引相关的几个变量:

             使用命令:mysql> SHOW VARIABLES LIKE 'ft%'; #ft就是FullText的简写

             ft_boolean_syntax    + -><()~*:""&|         #改变IN BOOLEAN MODE的查询字符,不用重新启动MySQL也不用重建索引
             ft_min_word_len    4                                   #最短的索引字符串,默认值为4,(通常改为1)修改后必须重建索引文件

                                                                               重新建立索引命令:repair table tablename quick 

             ft_max_word_len    84                                #最长的索引字符串,默认值为84,修改后必须重建索引文件

             ft_query_expansion_limit   20                      #查询括展时取最相关的几个值用作二次查询

             ft_stopword_file    (built-in)                      #全文索引的过滤词文件,具体可以参考:MySQL全文检索中不进行全文索引默认过滤词         

 

             特别注意:50%的门坎限制(当查询结果很多,几乎所有记录都有,或者极少的数据,都有可能会返回非所期望的结果)

                       -->可用IN BOOLEAN MODE即可以避开50%的限制。

                      此时使用全文索引的格式就变成了: SELECT * FROM `student` WHERE MATCH(`name`) AGAINST('聪' IN BOOLEAN MODE)

MySQL使用全文索引(fulltext index) - 一菲聪天 - 博客园.html

原文地址:https://www.cnblogs.com/attilax/p/15197447.html