遍历数据库记录的最佳和最快方法

Best and fastest way to walk through database records

我有一个 mysql 数据库 table 大约有 50k 条记录。每条记录都有一个数字列和一个比率列。

数字列包含唯一数字,例如:

所以基本上各种长度的随机数,可以是1位甚至8位。

我有一个号码,比如36703657896,我的任务是select从号码栏中找出最长和最短匹配的号码(匹配到号码的开头),得到费率。从上面提到的列表中,最长的匹配数是 3670 (36703657896),而最短的是 3 (36703657896).

谁能提出快速解决方案?它不一定必须在 mysql 中实现,如果速度更快,我愿意接受任何其他解决方案,例如某些 memcache。我目前正在使用 NodeJS 和 Lua 来访问这个数据库,但我可以使用任何东西以防它更快并且有更好的理由使用它。

您可以在 SQL 中执行此操作:

SELECT number FROM yourtable WHERE 
   number = substring('36703657896',1,length(number));

这假定您的 "number" 列是文本类型,否则您将不得不进行一些类型转换。

在 node.js 中使用 node-memcached:

var str='36703657896', maxMatchLength=4; 
var getkeys=[];
for (var i=0; i <= maxMatchLength; i++) { 
    getkeys[i] = str.substring(0,i);
}
memcached.getMulti(getkeys, function (err, data) {
  console.log(data);
});