View Code
SELECT jobTitle FROM job_job
wherecharindex('程式員',jobTitle)>0
SELECT jobTitle FROM job_job
where jobTitle like'程式員%'
select jobTitle from job_job
wherePATINDEX('%程式員%',jobTitle)>0
select jobTitle from job_job
wherecontains(jobTitle,'程式員')
select jobTitle from job_job
whereFREETEXT(jobTitle,'程式員')
測試資料6萬 SQL2008
4G記憶體,windwos server2008 cpu:Pentium(R)Dual-Core E6500
charindex
(1801 行受影響)
表 'job_job'。掃描計數 1,邏輯讀取 7945 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
SQL Server 執行時間:
CPU 時間 = 141 毫秒,佔用時間 = 312 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
like
(171 行受影響)
表 'job_job'。掃描計數 3,邏輯讀取 8746 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
SQL Server 執行時間:
CPU 時間 = 79 毫秒,佔用時間 = 51 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
如果like文法改成 like '%程式員%' 結果也是1801 為了不破壞索引的情況下去掉了前面的%號
PATINDEX
(1801 行受影響)
表 'job_job'。掃描計數 1,邏輯讀取 7945 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
SQL Server 執行時間:
CPU 時間 = 218 毫秒,佔用時間 = 551 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
contains
(1801 行受影響)
表 'job_job'。掃描計數 0,邏輯讀取 5524 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
SQL Server 執行時間:
CPU 時間 = 16 毫秒,佔用時間 = 184 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
FREETEXT
(16397 行受影響)
表 'job_job'。掃描計數 1,邏輯讀取 7945 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
SQL Server 執行時間:
CPU 時間 = 78 毫秒,佔用時間 = 274 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
SQL Server 執行時間:
CPU 時間 = 0 毫秒,佔用時間 = 0 毫秒。
測試資料精確度不高包含的意思吧
contains,FREETEXT必須建立全文索引
其它文章
http://www.cnblogs.com/freexiaoyu/archive/2010/08/28/1810697.html
http://www.cnblogs.com/freexiaoyu/archive/2010/08/28/1810696.html