gpt4 book ai didi

mysql:删除查询中的索引

转载 作者:行者123 更新时间:2023-11-29 18:50:57 24 4
gpt4 key购买 nike

我在这里提出了关于索引和选择查询的建议 mysql: multiple indexes advice

现在我想关注一个稍微不同的问题:我还必须同时删除很多行(如果你问的话,我的数据库支持 map 创建工具,所以你有很多插入和删除,并重新插入等(与用户添加和删除 map 元素一样多)。删除时也使用索引吗?我想象我可以将 table1 复制到新的 table2 上,排除所有未删除的元素(因此我使用选择),删除旧的 table1,然后将 table2 复制到 table1 中,这样 table1 最终只包含它需要的行。当然,如果删除操作像选择一样使用索引,那么这是没有用的。我强调非常大的表可能会达到数百万行。最好的方法是什么?

编辑:这是显示创建表

| map |创建表 map (
px 小数(7,3) NOT NULL,
py 小数(7,3) NOT NULL,
pz 小数(7,3) NOT NULL,
rx 小数(7,3) NOT NULL,
ry 小数(7,3) NOT NULL,
rz 小数(7,3) NOT NULL,
sx 小数(7,3) NOT NULL,
sy 小数(7,3) NOT NULL,
sz 小数(7,3) NOT NULL,
atinyint(1) NOT NULL,
b tinyint(1) NOT NULL,
ctinyint(1) NOT NULL,
d tinyint(1) NOT NULL,
e tinyint(1) NOT NULL,
f tinyint(1) NOT NULL,
g tinyint(1) NOT NULL,
htinyint(1) NOT NULL,
i tinyint(1) NOT NULL,
jtinyint(1) NOT NULL,
k tinyint(1) NOT NULL,
ltinyint(1) NOT NULL,
m 文本,
KEY a (a),
KEY b (b),
KEY c (c),
KEY d (d)
) 引擎=InnoDB 默认字符集=latin1 |

最佳答案

有多种技术可以处理一百万行被“更新”的情况。

  1. 如果是完全替换,则构建一个新表,然后交换(RENAME TABLE)。

  2. 如果“更新”需要INSERTUPDATE...即有些行是新的,有些需要小修改,那么看看插入...重复 key 更新...

  3. 如果您需要两者的某种组合,再加上DELETE一些行,它会变得更加困惑,但它可能可以通过很少的 SQL 语句来完成,无需循环。 CREATE 并填充(LOAD DATA?)更改集;执行多表DELETE;执行 INSERT ... SELECT .. LEFT JOIN .. 复制"new"行;执行 IODKU 或多表 UPDATE 执行 UPDATEs。我讨论了其中的一些here .

我不完全明白你需要做什么。这些技术中哪一个听起来很接近?您能否重新表述一下您的要求,使其更接近我的建议?或许我可以说得更具体一些。包含 SHOW CREATE TABLE 并指出在决定插入/删除/更新内容方面发挥作用的列可能会很有用。

而且,是的,INDEXes对于DELETEsUPDATEs很有用。

关于mysql:删除查询中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44356442/

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