私はHostNameという1つのフィールドを持つテーブルを持っています。これはテキストフィールドで、最大100文字です。私はそれを使用してDNSホスト名を格納します。このフィールドはプライマリキーとして設定されています。私は次のクエリを実行する場合には、期待される結果を返しますが、1万件のレコードをテーブルの上に完了するまでに約8秒かかります:(((HostsRev.HostName)> HostsRev FROMインデックスを使用しないアクセスクエリ
SELECT TOP 1 HostsRev.HostName = "test")) ORDER BY HostsRev.HostName;
"ORDER BY"部分を削除した場合、1秒未満で戻りますが、> = "テスト"の最初のレコードではありません。
私はC++アプリケーションからADOを使用してクエリを実行していますが、Accessでもテストを行い、クエリを作成して同じ結果を得ました。
私が必要とするのは、指定された文字列で始まる最初のレコードがあれば、それを素早く見つけることです。 LIKEクエリを使ってみましたが、同じ結果が出ました。 images.google.comで検索した場合、リストにgoogle.comは含まれていますが、images.google.comは含まれていないかどうかを知る必要があるため、これを行う必要があります(実際に正しく動作させるには、ルックアップを実行する前に文字列を反転させてください)。
これは問題でしたが、私はちょっと別の方法で解決しました。私のホスト名は既知の形式を使用しているので、WHERE HostName> = "test" AND HostName <= ".test"のようなものを追加しました。 – eselk