【发布时间】:2017-06-04 16:44:51
【问题描述】:
我在此处询问了有关索引和选择查询的建议 mysql: multiple indexes advice
现在我想关注一个稍微不同的问题:我还必须同时删除很多行(如果你问的话,我的数据库支持地图创建工具,所以你有很多插入和删除, 并重新插入等,与用户添加和删除地图元素一样多)。 删除中也使用索引吗?我想我可以将 table1 复制到一个新的 table2 上,不包括所有未被删除的元素(所以我使用 select),删除旧的 table1,然后将 table2 复制到 table1 中,这样 table1 最终只有它需要的行。当然,如果删除操作以与选择相同的方式使用索引,这是没有用的。我强调非常大的表可能达到数百万行。 最好的方法是什么?
编辑:这是显示创建表
|地图 |创建表 map (px decimal(7,3) NOT NULL,py decimal(7,3) NOT NULL,pz decimal(7,3) NOT NULL ,rx decimal(7,3) NOT NULL,ry decimal(7,3) NOT NULL,rz decimal(7,3) NOT NULL,
@ 987654329@ decimal(7,3) NOT NULL,sy decimal(7,3) NOT NULL,sz decimal(7,3) NOT NULL,a tinyint(1 ) 非空,b tinyint(1) 非空,c tinyint(1) 非空,d tinyint(1) 非空,e tinyint (1) 非空,f tinyint(1) 非空,g tinyint(1) 非空,h tinyint(1) 非空,
@987654340 @ tinyint(1) 非空,
@tinyint(1) 非空,k tinyint(1) 非空,l tinyint(1) 非空,m文字,
键a (a),
键b (b),
键c (c),
键d (d)
) 引擎=InnoDB 默认字符集=latin1 |
【问题讨论】:
-
Stack Overflow 不是您可以就如何编写代码获得建议的地方。想想你想做什么,计划你希望你的代码如何工作,最有效的方法是什么,然后开始编码。用纸和笔,有创意。不要选择简单的方法。同样,这不是其他人会告诉您如何编写代码的地方。如果您有一个您认为将来可能对其他人有所帮助的问题,请编辑并重新发布。否则我会建议你删除这个问题。
-
我不同意我的要求是关于编码的,事实上我可以处理我的代码,我的数据库让我有些头疼,我的问题是关于非常高级的概念和最佳实践。
-
忽略索引问题(暂时),让我们看看
DELETE的样子。
标签: mysql performance indexing