1

我希望让客户更轻松地搜索电话/手机/传真号码等内容。为此,我想在比较搜索值和数据库中的相关列之前删除任何非数字字符。我正在使用这些函数来仅获取 mysql 中字符串的数字元素,但是当我使用它们时,它们会减慢我的查询速度。

有什么办法可以做到不让我的运行时间飞得很高吗?

4

2 回答 2

2

您的查询时间爆炸式增长的原因是因为任何此类功能的使用都会使您无法使用任何索引。由于您不是直接在字段上搜索,而是在函数的输出上进行搜索,因此 mySQL 无法使用索引来执行查询。

这是除了您必须为每条记录计算函数输出这一事实之外的。

于 2012-05-30T11:36:00.027 回答
2

如果您有访问权限和权限,则绕过这些运行时的最佳方法是添加一个包含您正在过滤的内容的新列。添加一个 WRITE 触发器以使用剥离的值填充列,运行一个脚本,为所有记录更新一次字段。添加索引并包含新列。然后,在您的应用程序中,使用新列搜索电话的数字值。缺点是表模式更改和业务逻辑和/或数据抽象层的添加代码。

于 2012-05-30T11:39:59.980 回答