在MySQL中,会引发性能问题的慢查询,大体有以下三种可能:

    1. 索引没有设计好;
      1. 通过紧急创建索引来解决。
      2. 比较理想的是能够在备库先执行。假设你现在的服务是一主一备,主库A、备库B,这个方案的大致流程是这样的:
        1. 在备库B上执行 set sql_log_bin=off,也就是不写binlog,然后执行alter table 语句加上索引;
        2. 执行主备切换;
        3. 这时候主库是B,备库是A。在A上执行 set sql_log_bin=off,然后执行alter table 语句加上索引。
    2. SQL语句没写好;
      1. 可以通过改写SQL语句来处理。MySQL 5.7提供了query_rewrite功能,可以把输入的一种语句改写成另外一种模式。
    3. MySQL选错了索引。
      1. 应急方案就是给这个语句加上force index