简单查询250万条logging的数据集

我有一个存储在逗号分隔文本文件中的数据集(id,reference),每个ID与5个引用中的1个相关联。 例如

1B3242MK,A 2C003212KL,S L001DH728,A 

我有一个使用PHP和MySQL的工具的Web版本,当你input一个ID将返回一个基于引用的url。 例如。

 A,google.com C,bbc.co.uk L,twitter.com R,facebook.com S,instagram.com 

我需要做的是创build一个脱机使用的独立版本。 我build立了一个excel电子表格,用户inputID并通过VLOOKUP中的VLOOKUP返回URL,但不幸的是,excel只能处理1,048,000行,此时数据集为220万行(和30Mb)。

我无法确定最终用户是否可以访问,但是我想知道是否可以通过访问将其导出为XML,然后通过浏览器进行查询。

任何想法如何我可以做到这一点?

鉴于你有多less行,我没有看到Excel或XML解决您的问题。

编号考虑创build一个简单的程序与embedded式Sqlite / hsqldb来解决这个问题。 由于速度的原因,您需要一个有效的索引来执行查询,所以使用数据库将是您的最佳select。

写一个程序,将批量插入您的数据,并将其存储在一个文件中。 设置你的程序把db文件名作为参数,这样你可以使用多个这些文件数据库来进行testing和实际使用。

我会把它设置为2个表格,就像你所描述的一样,把ID作为关键字(假设它是唯一的)。

现在您应该可以编写一个程序来接受和ID,查询数据库并显示性能良好的结果。

HTH

在Excel中,我们可以解决行限制问题:

  1. 把你的庞大数据库分成两个或两个以上的部分,使用一些有效的标准来分隔行(这基本上是一个哈希函数,见下文)。

  2. 假设你有3个部分,把它们放在3个单独的工作表中。

  3. 把你的VLOOKUP命令变成三个命令,每个命令一个,并使用几个IF指向正确的表单

    伪代码:

    IF(group1, (VLOOKUP on Sheet1), IF(group2, (VLOOKUP on Sheet2), (VLOOKUP on Sheet3)))

要select要使用的条件,要拆分数据(然后find它),您必须尝试。 我将从第一个字符开始,如下所示:

 ID's starting with digits or letters A to F go in group 1 ID's starting with letters GQ go in group 2 ID's starting with letters R to Z go in group 3 

看看这是否为你的数据做了一个平衡的哈希函数(给出相当的组),或者根据你的喜好调整(例如使用第二个字符而不是第一个字符)。

性能提示:如果您的数据是静态的,请在Excel中对其进行sorting,并使用VLOOKUP将第四个参数is_sorted设置为TRUE。 有这么多排,这应该会有很大的不同。