我有一个脚本,可以重新填充大型数据库,并在需要时从其他表生成id值。
例如,在只提供客户名称的情况下记录订单信息。我会检查客户是否存在于 CUSTOMER
table。如果是的话, SELECT
请求获取他的 ID
并插入新记录。否则我会创造一个新的 CUSTOMER
进入并获取 Last_Insert_Id()
.
因为这些值重复了很多,我并不总是需要生成一个新的 ID
--对我来说把这些东西存起来更好吗 ID => CUSTOMER
关系作为在到达数据库之前检查的字典,还是应该让脚本不断地重新查询数据库?我认为第一种方法是最好的方法,因为它减少了数据库的负载,但是我关心的是id字典会有多大以及它的影响。
脚本与数据库运行在同一个框中,因此网络延迟可以忽略不计。
1条答案
按热度按时间nwnhqdif1#
“效率更高吗”?
字典就是把这些值存储在一个哈希表中。这对于查找值应该非常有效。
主要的缺点是维护字典。如果您知道数据库不会被更新,那么您可以加载它一次,并且应用程序内存中的操作可能比您对数据库所做的任何操作都要快。
然而,如果数据在变化,那么您就面临着真正的挑战。如何使内存版本与数据库版本保持一致?这可能非常棘手。
我的建议是将工作保存在数据库中,使用字典键的索引。这应该是足够快的应用程序。如果您需要进一步提高速度,那么使用字典是提高应用程序性能的一种可能性——但毫无疑问,是多种可能性中的一种。