优化EXCEL + MySQL处理

我在我的应用程序中有一个模块,用户将上传大约1000-2000行的Excel表格。 我正在使用excel-reader来读取excel文件。

Excel中有以下列:

1) SKU_CODE 2)PRODUCT_NAME 3)OLD_INVENTORY 4)NEW_INVENTORY 5)STATUS 

我有一个mysql表格库存 ,其中包含有关sku代码的数据:

 1) SKU_CODE : VARCHAR(100) Primary key 2) NEW_INVENTORY INT 3) STATUS : 0/1 BOOLEAN 

我有两种select:

选项1 :处理来自php的所有logging,提取所有sku_codes并在查询中执行一个msql:

  Select * from inventory where SKU_CODE in ('xxx','www','zzz'.....so on ~ 1000-2000 values); - Single query 

选项2 :为当前sku数据逐个处理每个logging

 Select * from inventory where SKU_CODE = 'xxx'; .. ... around 1000-2000 queries 

所以,你能帮我select最好的方法来完成上述任务,并给予适当的解释,以便我可以确定一个好的产品模块。

你会find一个中间的方法,有一个特定的最佳BATCH_SIZE,并用它作为查询你的数据库的标准。 一个批量大小的例子可能是5000.所以,如果你的Excel包含2000行,所有的数据被返回到单个查询中。 如果excel包含19000行,则执行四个查询,即0-5000 sku代码,5001-1000 sku代码….等等。 根据您的基准,尝试在BATCH_SIZE上进行优化。 保存数据库查询总是好的。

正如你可能已经意识到的那样,这两个选项都有其优点和缺点。 在正确索引的表格上,两者应该performance相当好。

选项1很可能会更快,如果您确定SKU的数量总是相当有限,用户只能在处理完整个文件后才能做出结果,那么效果会更好。

选项2具有非常重要的优点,因为您可以分别处理Excel文件中的每个logging。 这提供了一些有趣的选项,因为您可以开始为从Excel读取的每一行生成输出,而不必一次parsing整个文件,然后运行大查询。