測試環(huán)境:
本機Mysql,版本5.7.9, win10,中等配置筆記本電腦
阿里云porlarDb, 2核4G入門配置
測試表:
在本機和阿里云數據庫中,都創(chuàng)建4個表,?
test_fulltext_03、test_fulltext_04、test_fulltext_05、test_fulltext_06
表結構相同,都是id,province、name、content 4個varchar字段
測試數據準備
用java先生成300萬行和500萬行的兩個文本文件,內容格式如下:

再使用?LOAD DATA命令導入表里(速度極快,300萬行僅需1分鐘),比如:
?LOAD DATA LOCAL INFILE "d:/temp/data3.txt" INTO TABLE test_fulltext_03 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
表03和04都導入data3.txt, 300萬行,?
表05和06都導入data5.txt, 500萬行
對表04和06的name和content字段加上全文檢索索引:
CREATE fulltext INDEX index_name ON test_fulltext_04(name, content);
CREATE fulltext INDEX index_name ON test_fulltext_06(name, content);
添加后的狀態(tài)

================ 本機Mysql? 300萬行 性能測試 =====================
3.1:表03,直接用 like %%模糊匹配,檢索前1000行

? ? ? ? ? ? ? 速度驚人,0.016秒
3.2:表03,直接用 like %%模糊匹配,檢索第2000 - 3000行

? ? ? ? ? ? ? 0.234秒,可以看到時間明顯增加
3.3:表03,直接用 like %%模糊匹配,檢索第8000 - 9000行,2萬- 2萬1千行

? ? ? ? ? ? ?可以看到耗時迅速變多
3.4:表03,直接用 like %%模糊匹配,檢索條件匹配不到數據的情況

? ? ? ? ? 耗時4秒,可見like查詢,時間和目標數據在什么位置有關
3.5:表03,直接用 like %%模糊匹配,統(tǒng)計目標記錄數量

? ? ? ? 耗時也是4秒,可見統(tǒng)計數量很慢
3.6:表03,直接用 like %%模糊匹配,統(tǒng)計目標記錄數量,條件找不到的情況

? ? ? ? ?耗時3.8秒,還是慢
4.1:表04,使用全文索引進行匹配,檢索前1000行

? 令人驚奇,0.59秒,比直接like的要慢的多
4.2:表04,使用全文索引進行匹配,檢索前2000-3000行,8000-9000行,20000-21000行

? ? 時間也在增加,但是增幅較小,比較穩(wěn)定。之前表03匹配2萬-2萬1千行,要2.3秒
4.2:表04,使用全文索引進行匹配,統(tǒng)計數量

? ? ? ?這個耗時達到12秒,無法忍受的程度
4.3:表04,使用全文索引進行匹配,統(tǒng)計數量,匹配不到的情況

? ? ?更慢的效果。。。
================ 阿里云PolarDb? 300萬行 性能測試 =====================
阿里3.1:表03,直接用 like %%模糊匹配,檢索前1000行

? ? ? ? ?0.09秒,基本是網絡傳輸耗時
阿里3.2:表03,直接用 like %%模糊匹配,檢索第2000 - 3000行、8000-9000行,20000-21000行

? ? ? ? ? ? ? 時間增加的情況與本機mysql類似,性能基本持平
阿里3.3:表03,直接用 like %%模糊匹配,檢索條件匹配不到數據的情況

? ? ? ? ? 耗時3秒,比本機快1秒
阿里3.4:表03,直接用 like %%模糊匹配,統(tǒng)計目標記錄數量

? ? ? ? ? ? ? ? ? 耗時1.3秒,比本機的4秒快很多
阿里3.5:表03,直接用 like %%模糊匹配,統(tǒng)計目標記錄數量,條件找不到的情況

? ? ? ? ? ? ? ? 耗時1.1秒,比本機的4秒快很多
阿里4.1:表04,使用全文索引進行匹配,檢索1000行,處于不同位置的數據

? ? 速度和本機全文檢索基本一致
阿里4.2:表04,使用全文索引進行匹配,統(tǒng)計數量

? ? ? ?6秒7,雖然慢,但是比本機全文檢索快很多(12秒)
阿里4.3:表04,使用全文索引進行匹配,統(tǒng)計數量,匹配不到的情況

? ? ?3秒,比本機全文檢索快很多(13秒)
================== 300萬行測試的基本結論 ===========================
1:直接like查詢,數據靠前時,速度很快,越靠后越慢
2:全文檢索時,數據靠后帶來的效率影響較小,性能更穩(wěn)定
3:count數量比查詢數據要慢的多, 本機mysql 全文檢索的count更慢
4:阿里polarDb的like查詢,性能和本機基本一致, 阿里like查詢的統(tǒng)計數量,比本機要快的多
5:阿里polarDb的全文檢索查詢,性能和本機基本一致,統(tǒng)計數量比本機快得多
500萬行數據的測試,方法和以上一致,只貼數據
5.1 本機,like查詢

5.2本機,全文檢索

5.1阿里,like查詢

? ? ? ? ? ?可以注意到,count(*)的效率遠超本機
5.2阿里,全文檢索
