MariaDB社区
标题:
与优化器有关的事宜
[打印本页]
作者:
jeff
时间:
2007-10-30 12:21
标题:
与优化器有关的事宜
MySQL采用了基于开销的优化器,以确定处理查询的最解方式。在很多情况下,MySQL能够计算最佳的可能查询计划,但在某些情况下,MySQL没有关于数据的足够信息,不得不就数据进行“有教养”的估测。
当MySQL未能做“正确的”事时,可使用下述工具来帮助MySQL:
使用EXPLAIN语句获取关于MySQL如何处理查询的信息。要想使用它,可在SELECT语句前添加关键字EXPLAIN:
mysql>
EXPLAIN SELECT * FROM t1, t2 WHERE t1.i = t2.i;
关于EXPLAIN的详细讨论,请参见MySQL参考手册。
使用ANALYZE TABLE
tbl_name
,为已扫描的表更新键分配。
为已扫描的表使用FORCE INDEX,通知MySQL:与使用给定的索引相比,表扫描开销昂贵。
SELECT * FROM t1, t2 FORCE INDEX (index_for_column)
WHERE t1.col_name=t2.col_name;
USE INDEX和IGNORE INDEX也有一定的帮助。
关于全局和表级别的STRAIGHT_JOIN。
你可以调节全局或线程类系统变量。例如,用“
--max-seeks-for-key=1000”
选项启动
mysqld
,或使用
“SET max_seeks_for_key=1000”
来通知优化器:假定任何表扫描均不会导致
1000
个以上的键搜索。
[
本帖最后由 jeff 于 2007-10-30 12:24 编辑
]
欢迎光临 MariaDB社区 (http://123.56.88.72/)
Powered by Discuz! X3.2