我處於需要執行通配符搜索的情況。全文索引沒有任何幫助,因爲人們正在搜索單詞的一部分,而且我無法從搜索開始時去除%,以加快搜索速度,因爲它們可能正在搜索中間部分。如何在mysql中使用OR優化通配符搜索
有兩個字段需要搜索,並且應該返回匹配。如果我只搜索一個字段,它非常快(沒有多少行),但只要我在兩個搜索中搜索都很慢。
我就不贅述了,而是給一個想法,當我有
... AND (T1.Field1 LIKE '%search%')
或
... AND (T2.Field1 LIKE '%search%')
它需要0.0695秒
但是當我做
... AND (T1.Field1 LIKE '%search%' OR T2.Field1 LIKE '%search%')
it需要35秒
我該如何優化這個以及爲什麼OR會增加搜索時間這麼多?
的要求整,未經編輯查詢:
SELECT CDR.Status AS CDRStatus, D.VendorID, D.RevisionOfID, D.Revision, D.DocumentID, D.Title, D.OriginalFilename
FROM Documents AS D
LEFT JOIN CompanyDocumentReviews AS CDR ON CDR.DocumentID = D.DocumentID
LEFT JOIN Vendors AS V ON V.VendorID = D.VendorID
LEFT JOIN VendorAliases AS VA ON VA.Vendor1ID = V.VendorID AND VA.Vendor2ID != V.VendorID
LEFT JOIN Vendors AS V2 ON V2.VendorID = VA.Vendor2ID
WHERE D.Status != 'Deleted' AND (V1.VendorName LIKE '%search%' OR V2.VendorName LIKE '%search%')
請出示整個查詢 – Bohemian
你是如何加入T1和T2 – ejrowley
在OP –