浏览数据库记录的最佳和最快的方法

时间:2015-02-03 11:00:09

标签: mysql node.js lua memcached

我有一个包含大约50k记录的mysql数据库表。每条记录都有一个数字列和一个费率列。

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

  • 3670
  • 3720
  • 654
  • 36
  • 45225
  • 第3
  • 675572

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

我有一个号码,如36703657896,我的任务是从数字列中选择最长和最短的匹配数字(与数字的开头匹配)并获得费率。从上面提到的列表中,最长匹配数是3670( 3670 3657896),而最短匹配数是3( 3 6703657896)。

任何人都可以提出快速解决方案吗?它不一定必须在mysql中实现,如果它更快,我对任何其他解决方案都是开放的,比如一些memcache。我目前正在使用NodeJS和Lua来访问这个数据库,但我可以使用任何东西,以防它更快,并有更好的理由使用它。

1 个答案:

答案 0 :(得分:0)

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

SELECT number FROM yourtable WHERE 
   number = substring('36703657896',1,length(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);
});