萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 解決MySQL數據庫中與優化器有關的問題

解決MySQL數據庫中與優化器有關的問題

  MySQL采用了基於開銷的優化器,以確定處理查詢的最解方式。在很多情況下,MySQL能夠計算最佳的可能查詢計劃,但在某些情況下,MySQL沒有關於數據的足夠信息,不得不就數據進行“有教養”的估測。

  當MySQL未能做“正確的”事時,可使用下述工具來幫助MySQL:

  使用EXPLAIN語句獲取關於MySQL如何處理查詢的信息。要想使用它,可在SELECT語句前添加關鍵字EXPLAIN:

  mysql> EXPLAIN SELECT * FROM t1, t2 WHERE t1.i = t2.i;

  使用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也有一定的幫助。

  你可以調節全局或線程類系統變量。例如,用“--max-seeks-for-key=1000”選項啟動mysqld,或使用“SET max_seeks_for_key=1000”來通知優化器:假定任何表掃描均不會導致1000個以上的鍵搜索。

copyright © 萬盛學電腦網 all rights reserved