我記得在某處讀取以避免Jet SQL中的LIKE運算符,因爲它不會利用列上的索引。所以很長一段時間前,我開始編寫查詢這樣的「開頭」:Jet/ACE使用帶有LIKE BeginsWith查詢的索引嗎?
WHERE MyColumn BETWEEN "SomeText" AND "SomeTextZZZ"
只要有對MyColumn列的索引,該BETWEEN將採取指數的優勢。我現在開始質疑我的方式。 BETWEEN方法從來沒有讓我失望,但感覺很糟糕。
我可以理解爲什麼一個「包含」查詢無法使用索引:
WHERE MyColumn LIKE "*SomeText*"
但好像在使用索引「開始」查詢:
WHERE MyColumn LIKE "SomeText*"
是這是Jet/ACE團隊實施它的明顯優化。
誰能提供文檔或標杆證明解決這個問題的一種方式或其他?
我一直以爲它使用索引。它似乎比「contains」或「ends with」標準更快,所以我一直認爲這意味着它以某種方式使用索引。在Jet 3.5數據庫引擎程序員指南(Jet發佈的唯一有關文檔)中,我找不到任何關於它的信息。 –
更新了我的訪問2003的答案。 – Jacob