字符串創(chuàng)建索引方式:
在橋西等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站制作、網(wǎng)站設計 網(wǎng)站設計制作按需策劃設計,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,成都全網(wǎng)營銷推廣,外貿營銷網(wǎng)站建設,橋西網(wǎng)站建設費用合理。
1、直接創(chuàng)建完整索引,比較占用空間。
2、創(chuàng)建前綴索引,節(jié)省空間,但會增加查詢掃描次數(shù),并且不能使用覆蓋索引。
3、倒序存儲,在創(chuàng)建前綴索引,用于繞過字符串本身前綴的卻分度不夠的問題。
4、創(chuàng)建hash字段索引,查詢性能穩(wěn)定,有額外的存儲和計算消耗。
倒序存儲和hash字段索引都不支持范圍查詢。倒序存儲的字段上創(chuàng)建的所有是按照倒序字符串的方式排序的。hash字段的方式也只能支持等值查詢。
mysql alter table SUser add index index1(email); :包含了每個記錄的整個字符串
或
mysql alter table SUser add index index2(email(6)); :-對于每個記錄只取前6個字節(jié)
全字段索引操作流程
使用的是 index1(即 email 整個字符串的索引結構),執(zhí)行順序是這樣的:
1、從 index1 索引樹找到滿足索引值是’ zhangssxyz@xxx.com ’的這條記錄,取得 ID2 的值;
2、到主鍵上查到主鍵值是 ID2 的行,判斷 email 的值是正確的,將這行記錄加入結果集;
3、取 index1 索引樹上剛剛查到的位置的下一條記錄,發(fā)現(xiàn)已經(jīng)不滿足 email=' zhangssxyz@xxx.com ’的條件了,循環(huán)結束。
前綴字段索引操作流程
如果使用的是 index2(即 email(6) 索引結構),執(zhí)行順序是這樣的:
1、從 index2 索引樹找到滿足索引值是’zhangs’的記錄,找到的第一個是 ID1;
2、到主鍵上查到主鍵值是 ID1 的行,判斷出 email 的值不是’ zhangssxyz@xxx.com ’,這行記錄丟棄;
3、取 index2 上剛剛查到的位置的下一條記錄,發(fā)現(xiàn)仍然是’zhangs’,取出 ID2,再到 ID 索引上取整行然后判斷,這次值對了,將這行記錄加入結果集;
4、重復上一步,直到在 idxe2 上取到的值不是’zhangs’時,循環(huán)結束。
倒序查詢和hash字段的區(qū)別
它們的區(qū)別,主要體現(xiàn)在以下三個方面:
1、從占用的額外空間來看,倒序存儲方式在主鍵索引上,不會消耗額外的存儲空間,而 hash 字段方法需要增加一個字段。當然,倒序存儲方式使用 4 個字節(jié)的前綴長度應該是不夠的,如果再長一點,這個消耗跟額外這個 hash 字段也差不多抵消了。
2、在 CPU 消耗方面,倒序方式每次寫和讀的時候,都需要額外調用一次 reverse 函數(shù),而 hash 字段的方式需要額外調用一次 crc32() 函數(shù)。如果只從這兩個函數(shù)的計算復雜度來看的話,reverse 函數(shù)額外消耗的 CPU 資源會更小些。
3、從查詢效率上看,使用 hash 字段方式的查詢性能相對更穩(wěn)定一些。因為 crc32 算出來的值雖然有沖突的概率,但是概率非常小,可以認為每次查詢的平均掃描行數(shù)接近 1。而倒序存儲方式畢竟還是用的前綴索引的方式,也就是說還是會增加掃描行數(shù)。
可以用concat命令完成,比如:
set body = concat(left(body,length(body)*0.2),”替換",substring(body,length(body)*0.2))
MySQL批量替換指定字段字符串語句
UPDATE 數(shù)據(jù)表名 SET 字段名 = replace(字段名, '要替換的字符串', '替換為') WHERE 設定條件;
如將Wordpress文章中的“搜索引擎優(yōu)化”全部替換成“搜索引擎營銷”,替換語句為:
UPDATE wp_posts SET post_content = replace(post_content, '搜索引擎優(yōu)化', '搜索引擎營銷');
語句中還可以加入替換條件,如只替換限定ID小于200的內容:
UPDATE wp_posts SET post_content = replace(post_content, '搜索引擎優(yōu)化', '搜索引擎營銷') WHERE ID 200;