我有一个超过100万行的公共记录数据库。我需要使用用户fullname和Birthdate来查询数据库。查询将如下所示:
SELECT *
FROM TexasBexarCountyMisdemeanorPublicRecords
WHERE ([FULL-NAME] = 'EXAMPLELASTNAME, EXAMPLEFIRSTNAME')
AND (BIRTHDATE = '1989-10-18 00:00:00')
目前此查询需要2分45秒才能成功完成。不幸的是,由于数据结构和用户提供的信息,我想不出任何其他查询数据库的方式。
此查询的目的是提供与单个用户相关的记录列表。这些记录通过具有用户全名和出生日期来定义其所有权。所有列都有字符串值。用户也可能有多个记录。
此查询效率极低。有没有更好的方法来搜索寻找全名和生日匹配的记录?
我想在第一场比赛后停止搜索,但这对于有多条记录的用户来说没什么用。
我已经有了一个主键列,可以快速找到使用该ID的记录。但是,当用户第一次登录时,我无法知道该ID。因此,我需要使用他们的姓氏和出生日期搜索记录,然后保存这些ID以供将来参考。
如果我在搜索中添加更多条件会使其更有效率?如果我传递SEX,RACE,ETC的值。
感谢您的帮助。
答案 0 :(得分:2)
它快速返回ID,因为它已编入索引。索引您正在搜索的字段,并在适当时考虑覆盖索引。