我有一个脚本,可以重新填充大型数据库,并在需要时从其他表生成ID值。
例如,当仅给定客户名称时,记录订单信息。我将检查客户是否存在于CUSTOMER
表中。如果是这样,SELECT
查询以获取他的ID
并插入新记录。否则,我将创建一个新的CUSTOMER
条目并获得Last_Insert_Id()
。
由于这些值重复很多,而且我并不需要总是生成新的ID
?对我来说,最好将ID => CUSTOMER
关系存储为字典,并在到达之前进行检查数据库还是应该让脚本不断地重新查询数据库?我认为第一种方法是最好的方法,因为它减少了数据库的负载,但是我担心ID字典会变大以及其影响。
该脚本与数据库在同一盒子上运行,因此网络延迟可以忽略不计。
答案 0 :(得分:0)
“效率更高”吗?
好吧,字典正在将值存储在哈希表中。查找值应该非常有效。
主要缺点是维护字典。如果您知道数据库将不被更新,则可以将其加载一次,并且应用程序内的内存操作可能会比使用数据库执行的任何操作都要快。
但是,如果数据在变化,那么您将面临真正的挑战。如何使内存版本与数据库版本保持一致?这可能非常棘手。
我的建议是使用字典密钥的索引将工作保留在数据库中。对于您的应用程序,这应该足够快。如果您需要提高速度,那么使用字典是提高应用程序性能的一种可能性-毫无疑问,这是许多可能性中的一种。