在 Mysql 或 Python 中,对于增加有限的值集,什么是好的实现(插入速度/内存/读取速度)。也许并没有真正限制,但是,说在所有值中插入新值是对数的?
In Mysql: A SET datatype can hold any number of strings from a predefined list of strings specified during table creation
上下文:
我正在根据 Github 存储库中发生的事件历史来分析编程语言的趋势和其他相关性。语言的集合自然是有限的。我的脚本在发现新脚本时,增长速度比线性慢,我的直觉是它是对数的。无论如何,如果有 100 种语言和 1000000 条文本需要分析,堆叠值的速度如下:
最佳答案
在 MySQL 中:
CREATE TABLE Languages (
lang VARCHAR(222) NOT NULL,
counter INT UNSIGNED NOT NULL.
PRIMARY KEY(lang)
) ENGINE=InnoDB;
分析文本以确定其语言($lang)后:
INSERT INTO Languages (lang, counter)
VALUES ($lang, 1)
ON DUPLICATE KEY UPDATE
counter = counter + 1;
这将非常快(尽管不是最快)。它具有计算每种“语言”出现次数的附加功能。
MySQL SET
可能不适合,因为
- 当遇到新值时,需要
ALTER TABLE
,这是一个“重度”操作, SET
仅限于 64 个值。
关于python - 在 Mysql 或 Python 中良好的实现,可以增加有限的值集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52952364/