返回第一个匹配行提高查询效果

时间:2016-06-20 16:25:43

标签: mysql sql-server

我有一个超过100万行的公共记录数据库。我需要使用用户fullname和Birthdate来查询数据库。查询将如下所示:

SELECT * 
FROM TexasBexarCountyMisdemeanorPublicRecords 
WHERE  ([FULL-NAME] = 'EXAMPLELASTNAME, EXAMPLEFIRSTNAME') 
  AND (BIRTHDATE = '1989-10-18 00:00:00')

目前此查询需要2分45秒才能成功完成。不幸的是,由于数据结构和用户提供的信息,我想不出任何其他查询数据库的方式。

此查询的目的是提供与单个用户相关的记录列表。这些记录通过具有用户全名和出生日期来定义其所有权。所有列都有字符串值。用户也可能有多个记录。

  1. 此查询效率极低。有没有更好的方法来搜索寻找全名和生日匹配的记录?

  2. 我想在第一场比赛后停止搜索,但这对于有多条记录的用户来说没什么用。

  3. 我已经有了一个主键列,可以快速找到使用该ID的记录。但是,当用户第一次登录时,我无法知道该ID。因此,我需要使用他们的姓氏和出生日期搜索记录,然后保存这些ID以供将来参考。

  4. 如果我在搜索中添加更多条件会使其更有效率?如果我传递SEX,RACE,ETC的值。

  5. 感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

它快速返回ID,因为它已编入索引。索引您正在搜索的字段,并在适当时考虑覆盖索引。