我有一个带有街道地址列的位置表。我的应用程序提供了一种搜索机制,可以使用此列查询位置,我正在尝试加快查询速度。该数据库有超过 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/