我在Access中有一個名爲HostName的字段,它是一個文本字段,最大爲100個字符。我用它來存儲DNS主機名。該字段被設置爲主鍵。如果我下面的查詢返回預期的結果,但需要約8秒至1萬條記錄在表上填寫:訪問查詢不使用索引
SELECT TOP 1 HostsRev.HostName FROM HostsRev WHERE(((HostsRev.HostName)> =「test」)) ORDER BY HostsRev.HostName;
如果我刪除了「ORDER BY」部分,它會在不到1秒的時間內返回,但並不總是返回我期望的結果 - 而不是第一條記錄> =「test」。
我正在通過ADO從C++應用程序進行查詢,但我也在Access中進行了測試,通過創建查詢並獲得相同的結果。
我需要的是快速找到第一個記錄,如果有的話,以給定的字符串開頭。我也嘗試使用LIKE查詢,但結果相同。我需要這樣做,因爲如果我在images.google.com上搜索,我需要知道該列表是否包含google.com,但不包含images.google.com(我實際上是以反向字符串順序存儲主機名以使其正常工作,並在查找之前反轉字符串)。
這是問題所在,我剛剛解決了這個問題。由於我的主機名稱使用已知格式,因此我添加了像WHERE HostName> =「test」和HostName <=「.test」之類的內容,最初的過濾僅記錄了幾條記錄,然後選擇頂端1仍然可以很快。 – eselk 2012-01-19 16:02:18