mysql優化(待續)

2021-07-04 00:24:51 字數 2365 閱讀 3675

like %keyword 索引失效,使用全表掃瞄。但可以通過翻轉函式+like前模糊查詢+建立翻轉函式索引=走翻轉函式索引,不走全表掃瞄。

like keyword% 索引有效。

like %keyword% 索引失效,也無法使用反向索引。

一 使用下面的函式來進行模糊查詢,如果出現的位置〉0,表示包含該字串。

查詢效率比like要高。

如果:table.field like 『%aaa%』可以改為locate (『aaa』 , table.field) > 0

locate(substr,str)

position(substr in str)

返回子串substr在字串str第乙個出現的位置,如果substr不是在str裡面,返回0。

使用instr

select

count(*) from

table t where instr(t.column,』xx』)> 0

這種查詢效果很好,速度很快。

二 查詢%xx的記錄

select

count(c.c_ply_no) as

count

from policy_data_all c, item_data_all i

where c.c_ply_no = i.c_ply_no

and i.c_lcn_no like 』%245′

在執行的時候,執行計畫顯示,消耗值,io值,cpu值均非常大,原因是like後面前模糊查詢導致索引失效,進行全表掃瞄

解決方法:這種只有前模糊的sql可以改造如下寫法

select

count(c.c_ply_no) as

count

from policy_data_all c, item_data_all i

where c.c_ply_no = i.c_ply_no

and reverse(i.c_lcn_no) like reverse(『%245′)

使用翻轉函式+like前模糊查詢+建立翻轉函式索引=走翻轉函式索引,不走全掃瞄。有效降低消耗值,io值,cpu值這三個指標,尤其是io值的降低。

使用load命令匯入資料時,適當的設定可以提高匯入的速度

// myisam儲存引擎快速匯入大量資料

alter

table tbl_name disable keys;

loading the data

alter

table tbl_name enable keys;

disable keys 和 enable keys 湧來開啟或者關閉 myisam表非唯一索引的更新

在匯入大量的資料到乙個非空的 myisam 表時,通過設定這兩個命令,可以提高匯入效率。

在匯入大量資料到乙個空的 myisam 表時,預設就是先導入資料然後才建立索引。

innodb型別的表按照逐漸的順序儲存,所以匯入的資料按照主鍵的順序排列,可以提高匯入資料的效率。

在匯入資料前執行set unique_checks=0,關閉唯一性校驗,在匯入結束後執行set unique_check=1,恢復唯一性校驗,可以提高匯入效率。

如果應用使用自動提交的方式,建議在匯入前執行set autocommit=0,關閉自動提交,匯入結束後再執行set autocommit=1,開啟自動提交,可以提高匯入效率。

如果從同一客戶插入很多行,應盡量使用多個值表的insert語句,這種方式大大縮減客戶端與資料庫之間的連線、關閉等消耗,使得效率比分開執行單個insert語句塊。例如:insert into test values(1,2), (1, 3), (1,4)如果從不同客戶端插入很多行,可以通過使用 insert delayed 語句得到更高的速度。delayed 的含義是讓 insert 語句馬上執行,其實資料都被放在記憶體的佇列中,並沒有真正寫入磁碟,比每條語句分別插入要快的多;low_priority剛好相反,在所有其他使用者對標的讀寫完成後才進行插入。

將索引檔案和資料檔案分別在不同的磁碟上存放(利用建表中的選項)。

如果進行批量插入,可以通過bulk_insert_buffer_size變數值的方法來提過速度。這只對 myisam 表使用。

從乙個檔案裝載乙個表時,使用 load data infile 。通常比使用很多 insert語句快20倍。

My Sql 語法收集 待續

1.alter alter ignore table tbl name alter spec alter spec alter specification add column create definition first after column name or add index index ...

MySQL 學習筆記 待續

資訊和資料 關係資料庫系統 實體 聯絡 模型 實體 客觀事物在資訊世界中稱為實體 entity 它是現實世界中任何可區分 識別的食物 屬性 描述實體或者聯絡的性質或者特徵的資料項 聯絡 反應事物內部或事物之間的關聯集合 常見的實體聯絡有三種 一對 一 一對多 多對多 關係模型 relational ...

筆記 ios效能優化(未完待續。。。)

最近在網上看了很多的記憶體優化方案,感覺都很 nice 本文主要是對網上的記憶體優化方案做一下列表式總結,不涉及具體的內容 主要目的就是備忘 用arc管理記憶體 貌似現在的新專案99 用的都是arc了 在正確的地方使用 reuseidentifier 盡可能使 view 不透明 view不透明的情況...