优化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整个文件,然后运行大查询。