MYSQL笔记(控制优化器的行为)

如果不满意MYSQL提供的优化方案,可以使用一些查询提示来控制优化器的行为

1.HIGH_PRIORITY和LOW_PRIORITY

决定访问同一个表的语句相对与其他语句的优先级,根据这两个提示服务器对访问表的队列进行处理,在有表锁的存储过程中有效,但在有细粒度锁或者并发控制的存储引擎上无效

2.DELAYED

应用于INSERT和UPDATE,语句立刻返回并将待插入的列放入缓冲区,在表空闲时插入。

3.STRAIGHT_JOIN

强制联接顺序。

4.SQL_SMALL_RESULT和SQL_BIG_RESULT

提示优化器在GROUP BY 和DISTINCT查询中何时以及如何使用临时表

5.SQL_BUFFER_RESULT

将结果放在临时表中,并尽快释放表锁。

6.SQL_CACHE和SQL_NO_CACHE

是否使用查询缓存。

7.SQL_CALC_FOUND_ROWS

在有Limit子句的时候计算完整的结果集。可以通过FOUND_ROWS()来取得它得到的行数。

8.FOR UPDATE 和 LOCK IN SHARE MODE

控制锁定,预先锁定匹配行,只针对有行级锁的存储引擎

9.USE INDEX,IGNORE INDEX, FORCE INDEX

是否使用或忽略索引

10.系统变量Optimizer_search_depth和Optimizer_prune_level

用于控制优化器在选择执行计划,合理的设置可以加快选择的速度

你可能感兴趣的:(mysql)