在mysql或python中很好的实现,可以增加有限的值集

qxsslcnc  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(361)

在mysql或python中,为了增加有限的值集,什么是好的实现(插入速度/内存/读取速度)。也许并没有真正的限制,但是说在所有值中插入新值是对数的?
在mysql中:set数据类型可以保存在表创建期间指定的预定义字符串列表中的任意数量的字符串
上下文:
我根据github存储库中发生的事件的历史,分析编程语言的趋势和其他相关性。语言集自然是有限的。我的脚本在发现新的脚本时,增长比线性的慢,我的直觉是它是对数的。无论如何,如果有100种语言和1000000个文本要分析,那么叠加值的速度是这样的:

juud5qan

juud5qan1#

在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个值。

相关问题