在Percona找到最长的前缀

时间:2015-08-03 13:32:29

标签: mysql sql percona

匹配的最长前缀

我正在寻找与Percona数据库中的电话号码匹配的最长前缀。

  • 前缀可以存储为BIGINT或VARCHAR。
  • 如果您愿意,可能有一个单独的临时数据列(例如前缀长度)。
  • 表格读得很重(大约数千/秒),只能写入几次/天。
  • 数据大小为30-70M记录。

到目前为止我有什么

CREATE TABLE Prefixes (
  `Prefix` BIGINT NOT NULL,
  PRIMARY KEY (`Prefix`));

SELECT Prefix
FROM Prefixes
WHERE Prefix IN (1234567, 123456, 12345, 1234, 123, 12, 1)
ORDER BY LENGTH(Prefix) DESC
LIMIT 1;

这有效,但我希望它能更快地执行,并允许我使用准备好的语句。

我在想什么

  • 无论如何,DB可能会进行B树查找,如果我可以直接使用它,它会加快查找速度。
  • SQL查询看起来非常难看,尤其是如果使用占位符,因为每个前缀长度都需要一个预准备语句。

0 个答案:

没有答案