今天在做效能測試的時候,發現資料庫的load很高,排查覺得sql的索引有問題,但是一時找不到原因,後來經過google發現是hint的問題
文摘如下:
在select/delete/update後寫/*+ hint */
如 select /*+ index(table_name index_name) */ col1...
注意/*和+之間不能有空格
如用hint指定使用某個索引
select /*+ index(cbotab) */ col1 from cbotab;
select /*+ index(cbotab cbotab1) */ col1 from cbotab;
select /*+ index(a cbotab1) */ col1 from cbotab a;
其中 table_name是必須要寫的,且如果在查詢中使用了表的別名,在hint也要用表的別名來代替表名;
index_name可以不必寫,oracle會根據統計值選乙個索引;
如果索引名或表名寫錯了,那這個hint就會被忽略;
SQL 語句中優化方法
整理一下以前的一些用sql語句的習慣。先提乙個概念掃瞄引數 sarg 用於限制搜尋的乙個操作,因為它通常是指乙個特定的匹配,乙個值得範圍內得匹配或者兩個以上條件的 and 連線。1.or 會引起全表掃瞄.如 name 張三 and 5000 符合sarg 而 name zhangsan or 500...
SQL語句中的NOT IN 的優化
sql語句中的in和not in子查詢理解起來很直觀,和實際的業務也很匹配,所有經常被開發人員使用,資料量不大的表還好,如果資料量太大將導致效能問題。原sql select count distinct t.id from task t where t.tenant key tp18squme1 a...
MySql優化sql語句效能
一.優化方面 可以從下面2個方面進行優化 1.減少io次數 2.減少cpu計算次數 二.常見sql命令誤區 1.count 1 和count primary key 優於 count 實際上count 計算操作做了優化 2.select a,b from 比 select a,b,c from 可以...