MySQL查詢提示

2021-09-07 10:19:31 字數 2129 閱讀 1329

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

表鎖定:

lock table t1 read/write;

select * from t1;

delete from t1;

unlock tables ;

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秒,有點得不償失

意思是不要為了找方法而花費的時間超過做事情本身的時間

MySql服務啟動查詢時提示錯誤11001解決辦法

問題 mysql服務已經啟動,可以修改資料庫,但是當新建查詢時出現異常 myeclipse中debug server啟動tomcat報錯解決辦法 肯能是重置埠是沒有給重啟電腦,使得修改後的軟體配置沒有同步更新造成的 2.也可能是mysql長時間啟動出現的bug吧 可能性很小 無論是那種原因,因為我們...

mysql 出錯提示

1.error 1044 42000 access denied for user tracy localhost to database innodbtest tracy這個使用者,沒有許可權建立使用者 使用root使用者登入,執行如下命令 mysql create database innodb...

mysql提示符是什麼 MySQL提示符

下表顯示出可以看見的各個提示符並簡述它們所表示的mysql的狀態 提示符含義 mysql 準備好接受新命令。等待多行命令的下一行。等待下一行,等待以單引號 開始的字串的結束。等待下一行,等待以雙引號 開始的字串的結束。等待下一行,等待以反斜點 開始的識別符的結束。等待下一行,等待以 開始的注釋的結束...