我在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