gpt4 book ai didi

mysql - 使用 InnoDB 引擎比较 MySQL 中大 'text' 类型值的最有效方法

转载 作者:行者123 更新时间:2023-11-29 07:10:47 34 4
gpt4 key购买 nike

我有一个像这样的临时表:

CREATE TABLE `staging` (
`created_here_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`desc_text` TEXT NOT NULL );

目标表为:

CREATE TABLE `final_tbl` (
`row_id` BIGINT NOT NULL AUTO_INCREMENT,
`created_here_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`desc_text` TEXT NOT NULL );

仅当 desc_text 不存在时,我才想将其插入到 Final_tbl 中。我正在考虑两种选择:

  1. 检查final_tbl.desc_text中是否存在staging.desc_text,如果不存在则插入final_tbl
  2. 在“final_tbl”中维护一列,用于存储 desc_text 列的 SHA224 值。将 staging.desc_text 的 SHA224 值与最终表中的 SHA224 列进行比较,然后决定是否插入或忽略。

我想知道哪个选项会更快?

最佳答案

嗯。 。 。

创建 SHA224 列,并带有索引:

create index unq_final_tbl_sha224 on final_tbl(sha224);

然后进行如下更新:

insert into final_tbl(desc_text, sha224)
select *
from (select desc_text, sha224
from staging s
where not exists (select 1 from final_tbl f where f.ssh224 = s.ssh224)
) s
where not exists (select 1 from final_tbl f where f.desc_text = s.desc_text);

子查询背后的想法是绝对确保MySQL在比较哈希值之前不会得到任何关于比较字段长形式的想法。在没有子查询的情况下使用 and 可能是安全的,但上面的方法更为保守。

关于mysql - 使用 InnoDB 引擎比较 MySQL 中大 'text' 类型值的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39811198/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com