【发布时间】:2014-10-14 18:24:15
【问题描述】:
我创建了一个 mysql 表,其中包含犯罪计数、犯罪描述、犯罪类别和犯罪地址。我已经在这张表上创建了一些报告。用户希望在报告中按地址过滤器进行搜索。所以我们将在 table 上使用 where 子句,并在 street 上设置条件。
问题是街道地址是一个很大的字符串,当表格已经很大时,通过地址搜索/过滤表格将花费大量时间。我尝试使用像 md5(streetaddress) 这样的散列,但这也无济于事。使用这种 where 子句,查询变得非常慢
例子
select * from crimedata where streetaddress = "41 BENNETT RD Watertown Massachusetts United States"
在这种情况下,索引 streetaddress 会有所帮助,还是我应该使用某种散列来使这种字符串在表中搜索得更快?
沙赫
【问题讨论】:
-
是的,索引肯定会有所作为
-
你说这样的查询“会花费很多时间”。他们会花费很多时间,还是您只是假设他们会? MySQL 非常擅长这种查找。散列不值得麻烦,而索引是。您真正的问题将是这种
WHERE子句所需的完全匹配。您可以考虑 FULLTEXT 搜索,您可以阅读相关内容。
标签: mysql string-hashing