程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL--Profile分析

MYSQL--Profile分析

編輯:MySQL綜合教程


MYSQL--Profile分析   今天在分析一條SQL語句的時候,發現在SQL語句的末尾或者最前面加空格,並不影響直接從QC裡面去取結果。 參考手冊裡是這麼說的:   www.2cto.com   查詢必須是完全相同的(逐字節相同)才能夠被認為是相同的。另外,同樣的查詢字符串由於其它原因可能認為是不同的。使用不同的數據庫、不同的協議版本或者不同 默認字符集的查詢被認為是不同的查詢並且分別進行緩存。 既然是要完全相同,那麼如下兩條SQL應該是不同的   select count(*) from t1         ; select count(*) from t1 ; 但是在實際運行時,確的當作相同的SQL來執行的 mysql> SHOW PROFILES; +----------+------------+-----------------------------+ | Query_ID | Duration | Query | +----------+------------+-----------------------------+ | 1 | 0.00006925 | select count(*) from t1 | | 2 | 0.08126275 | insert into t1 values(6) | | 3 | 0.00043675 | select count(*) from t1 | | 4 | 0.00006850 | select count(*) from t1 | | 5 | 0.00021075 | select count(*) from   t1 | | 6 | 0.00007150 | select count(*) from   t1 | | 7 | 0.00007300 | select count(*) from t1 | | 8 | 0.00020975 | select        count(*) from t1 | +----------+------------+-----------------------------+ 8 rows in set (0.00 sec)  www.2cto.com   而且只是在前後加了空格的SQL語句,就直接從QC裡面獲取數據了,不再進行優化,執行等操作。 mysql> SHOW PROFILE FOR QUERY 7; +--------------------------------+----------+ | Status | Duration | +--------------------------------+----------+ | starting | 0.000022 | | checking query cache for query | 0.000007 | | checking privileges on cached | 0.000005 | | sending cached result to clien | 0.000034 | | logging slow query | 0.000003 | | cleaning up | 0.000003 | +--------------------------------+----------+ 6 rows in set (0.00 sec) 在SQL的中間插入空格,才會當作不同的SQL來運行。   mysql> SHOW PROFILE FOR QUERY 8; +--------------------------------+----------+ | Status | Duration | +--------------------------------+----------+ | starting | 0.000023 |  www.2cto.com   | checking query cache for query | 0.000049 | | Opening tables | 0.000013 | | System lock | 0.000005 | | Table lock | 0.000037 | | init | 0.000012 | | optimizing | 0.000006 | | executing | 0.000012 | | end | 0.000004 | | query end | 0.000003 | | freeing items | 0.000036 | | storing result in query cache | 0.000006 | | logging slow query | 0.000003 | | cleaning up | 0.000002 | +--------------------------------+----------+ 14 rows in set (0.00 sec)   從上面可以得到,QC在存儲SQL語句的時候,是去掉了頭尾的空格的。而且在查詢時,也自動去掉首尾的空格,再到QC裡面去比較的。     作者 909413335

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved