【发布时间】:2014-08-12 15:15:00
【问题描述】:
我有这样的数据表:
forename surname
John O'Neil
Aaron O Neil
Peter O-Neil
Mary Tollmache-Tollmache
Beatrice Tollmache Tollmache
所有数据都经过清理,因此它们只包含拉丁和拉丁补充字符表中的字符,以及空格 ( )、撇号 (') 和连字符 (-)。
是否可以在执行 GROUP BY 时将字符空格 ( )、撇号 (') 和连字符 (-) 视为相同。
所以,以上表为例,如下查询:
SELECT surname, COUNT(*) AS cnt FROM tbl GROUP BY surname;
会返回:
surname cnt
O'Neil 3
Tollmache-Tollmache 2
更新:如果您像我一样使用此查询来构建其他表,Jim 的建议很有用,但可能不是部署的好主意。
根据 Jim 的建议,我对 surname 列索引的表进行了以下测试:
550,000 row table: 4.98 seconds
3.375 million row table: 27.62 seconds
12.485 million row table: 1 min 33 seconds
【问题讨论】: