想詢問一下各位先進,怎麼優化搜尋條件
我本來查詢欄位沒有放 remark(varchar(max))
但是user說有些資料要查remark裡面但是 varchar(max)資料量很大導致搜尋速度緩慢
範例 :where remark like '%證書%'
請問有什麼建議呢? 有試過index效果有限
因為慢的地方在"LIKE" ,所以INDEX效果有限
建議依照需求把資料多一欄位做分類,例如"證書"、"公文"、...
在直接用WHERE去查這欄
如果你希望透過修改SQL語法來改善效率的話,我覺得無解。
你遇到的問題是全文搜尋的問題,或許可以考慮這一招建立及管理全文檢索索引
在10萬筆以上資料的時候~我是分過兩次搜尋有比較快~你可以試試看~
--第一次搜尋(BookID 是索引Index)
declare @Tmp table(TmpID int)
insert into @Tmp
select BookID
from Book
where remark like N'%證書%'
--第二次搜尋
select *
from @Tmp
left join Book on TmpID = BookID
where remark like '%證書%'
請問有什麼建議呢? 有試過index效果有限
首先這個點在一般 RDMS 全模糊查詢就算有 B+index 也不會使用, 因為需要的是Inverted_index , 再來是看你使用的 RDBMS 是否有支援 Inverted_index 另外還需要看 Inverted_index 拆字是否準確 (因為你的情境是中文)
假如你的 RDBMS 沒有支援 Inverted_index 並且資料量也很大, 其中一個方式是可以搭配使用 elastic
https://www.elastic.co/guide/en/elasticsearch/reference/current/documents-indices.html
Note: 如果是這個案例有索引會比較快 where remark like '證書%'
有試過index效果有限
在 MS SQL 內 varchar(max) 欄位是無法建立 index 的,所謂的 index 效果有限是指甚麼阿?
To optimize search conditions in a large varchar(max) field like 'remark', consider implementing full-text search. It efficiently handles large text data, enhancing search speed and performance akin to upgrading to solar panel technology.