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

MySQL查詢提示,MySQL提示

編輯:MySQL綜合教程

MySQL查詢提示,MySQL提示


 

MySQL查詢提示:

1.LOW_PROPRITY,HIGHT_PRIORITY
  作用:指定sql語句的運行優先級,會將加了HIGHT_PROPRITY提示的sql調度到表訪問隊列的最前面
  限制:僅對表級別的鎖的引擎有效(MyISAM引擎),對非表級別的引擎的鎖無效,比如innodb引擎
  用法:update test LOW_PROPRITY set name = 'abc' where id = 1


2.DELAYED
  作用:對於Insert或者replace操作,將待寫入的數據放入緩沖區,待表空閒的時候再做真正的插入
  限制:存在丟失數據的風險,並非所有引擎都支持DELAYED 操作,mysql5.7似乎並不支持改操作符
  用法:insert DELAYED into test values (1,'aaa')

3.straight_join 強制連接順序
  作用:強制連接順序,指定表按照書寫的順序或者前後順序來關聯
  限制:
  用法:1.select * from t1 a straight_join t2 b on a.id= b.id1  固定t1表和t2 表的關聯順序,
     2.select straight_join * from t1 a inner join t2 b on a.id= b.id1 inner join test c on b.id1 = c.id 讓查詢中所有的表按照書寫順序做關聯
4.SQL_SMALL_RESULT 和 SQL_BIG_RESULT
  作用:在處理DISTINCT或者GROUP BY的時候,提示優化器按照較小(內存空間)或者較大(磁盤臨時控件)的方式來處理結果集
  限制:僅對select 語句有效
  用法:select SQL_SMALL_RESULT a.id, count(1) from t1 a straight_join t2 b on a.id= b.id1 group by a.id

5.SQL_BUFFER_RESULT
  作用:將查詢結果集放入臨時表,盡快釋放表鎖
  限制:
  用法:select SQL_BUFFER_RESULT * from testbak

6. SQL_CACHE和SQL_NO_CACHE
  作用:告訴查詢引起是否將結果緩存在查詢緩存中
  限制:
  用法:select SQL_NO_CACHE/*SQL_CACHE*/ * from testbak

7.SQL_CALC_FOUND_ROWS
  作用:存在分頁的情況下,提示在計算總行的時候忽略分頁限制
  限制:
  用法:select SQL_CALC_FOUND_ROWS * from testbak LIMIT 100; --限制為100 頁面
     select FOUND_ROWS();--計算上述語句中不加LIMIT 100情況下的總行數

8.FOR UPDATE 和 LOCK IN SHARE MODE
  作用:鎖提示
  限制:僅INNODB引起支持這兩個提示
  用法:select * from testbak where id = 8888 for update

9.USE INDEX,IGNORE INDEX,FORCE INDEX
  作用:強制索引提示
  用法:select count(1) from testbak USE index(idx_id) ;
     select count(1) from testbak IGNORE index(idx_id) ;
     select count(1) from testbak FORCE index(idx_id) ;

10. optimizer_search_depth
  控制優化器在窮舉執行計劃時的限度,如果查詢長時間處於Statistics狀態,那麼可以考慮調地次參數
  optimizer_prune_level
  默認打開,讓優化器根據需要掃描的行數來決定是否跳過某些執行計劃
  optimizer_switch
  包含開啟/關閉優化器特性的標志位
  前兩個參數可以讓優化器在生成執行計劃的時候更加靈活,但是有可能錯過一些最優化的執行計劃,
  比如優化器要花10秒鐘找一個“最”優化的執行計劃,
  但是可以話3秒鐘找一個“次”優化的執行計劃,“次”優化的執行計劃可以在2秒鐘之內完成查詢
  這個查詢一共花費了3+2=5秒
  但是如果是花10秒鐘找一個“最”優化的執行計劃,最優化的執行計劃需要0.5秒完成查詢
  這個查詢一共花費了10+0.5+2=10.5秒,有點得不償失
  意思是不要為了找方法而花費的時間超過做事情本身的時間

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