小编Dan*_*ett的帖子

大 INSERT INTO SELECT [..] FROM 逐渐变慢

我编写了一个程序,可以INSERT批量处理 100,000 次并显示其进度

源表包含 2.5GB 的数据:

CREATE TABLE wikt.text (
    old_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    old_text MEDIUMBLOB NOT NULL,
    old_flags TINYBLOB NOT NULL,

    PRIMARY KEY (old_id),
    KEY old_id (old_id)

)   ENGINE=INNODB
    AUTO_INCREMENT=23565544
    DEFAULT CHARSET=binary;

CREATE INDEX old_id ON text (old_id);
Run Code Online (Sandbox Code Playgroud)

这是目标表:

CREATE TABLE domains.dictionary_language (
    text_id     INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    english     TINYINT(1) UNSIGNED NOT NULL,

    PRIMARY KEY (text_id),
    KEY         english (english)

)   ENGINE=INNODB
    AUTO_INCREMENT=23565544;
Run Code Online (Sandbox Code Playgroud)

这是以 100k 为批次运行的查询:

INSERT INTO domains.dictionary_language
    SELECT      old_id,
                IF(old_text LIKE …
Run Code Online (Sandbox Code Playgroud)

mysql performance insert query-performance

3
推荐指数
1
解决办法
1万
查看次数

如何每隔几秒自动刷新/重新运行一个查询?

我有一个针对没有 GUI 的数据库运行的脚本。这个简单的查询让我看到它的进展:

select
    *,
    (select count(*) from domains) as count,
    (select 456976-count(*) from domains) as remaining
from domains
order by domain desc
limit 0, 1;
Run Code Online (Sandbox Code Playgroud)

使用 MySQL Workbench,如何每隔几秒自动刷新/重新运行此查询?

我试过谷歌搜索,但没有想出任何相关的东西。

旁白:幻数 456,976 是 26^4;它与脚本有关。

mysql mysql-workbench

2
推荐指数
1
解决办法
3万
查看次数