sql - 如何对街道地址列进行索引

标签 sql sql-server sql-server-2005

我有一个带有街道地址列的位置表。我的应用程序提供了一种搜索机制,可以使用此列查询位置,我正在尝试加快查询速度。该数据库有超过 200 万条记录,我只是想提出这个问题来看看人们做了什么。我确信我不是第一个。我的问题基本上是这样的:给定主键、地址、城市、州、邮政编码列,应该如何对该表建立索引,以便像下面这样的查询不会花费 10 秒:

`select * from location where loc_address_s like '%blvd%'`
`select * from location where loc_address_s like 'oak' AND loc_city like 'salem'`

等等...

最佳答案

如果可能的话,最好的选择是将地址分解为各个组成部分。这就是美国邮局以及许多(大多数?)大型地址处理公司和机构存储地址的方式。数据库设计最佳实践通常包括不要让某一列在一行中保存多于一条数据。现在,您正在存储街道号码、街道方向(例如,N 表示“北大街”)、街道名称、街道类型等。

正确分解所有内容后,如果需要,您可以为各个列建立索引。

我确信那里有一个标准(尽管快速搜索 ansi.org 网站并没有给我任何信息)。存储地址是一件很常见的事情。

此外,如果您不想完全自己完成这项工作,您可以找到许多地址清理服务和软件来将地址分解为这些列。

关于sql - 如何对街道地址列进行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7248601/

相关文章:

sql - 有没有一种方法可以将 float 转换为小数而不进行四舍五入并保持其精度?

sql - 如何按日期查询结果调整 SQL 聚合以合并同一级别中某些列存在空值的值

sql - 在 sql server 2005 中执行测试

sql-server-2005 - 在 Pandas 中传递查询参数

SQL Server 日期比较忽略年份

php - PDO 是否处理 sql 函数?

java - 查询sql数据库中的索引表与使用自己的HashMap

sql - 我应该从多少条返回记录开始出现性能问题?

java - 尝试使用 WebService 从 Android 应用程序将数据插入 SQL Server

mysql - 通过行值的总和来限制 SQL