Questions tagged «query-performance»

9
SQL Server IN vs. EXISTS性能
我很好奇以下哪个会更有效? 我一直对使用它持谨慎态度,IN因为我相信SQL Server会将结果集变成一个大IF语句。对于较大的结果集,这可能会导致性能下降。对于较小的结果集,我不确定哪一个都更好。对于大型结果集,会不会EXISTS更有效率? WHERE EXISTS (SELECT * FROM Base WHERE bx.BoxID = Base.BoxID AND [Rank] = 2) 与 WHERE bx.BoxID IN (SELECT BoxID FROM Base WHERE [Rank = 2])

3
从表字段中选择不同的值
我正在努力使自己的头转向Django的ORM。我想做的是获取表中字段中不同值的列表..等效于以下之一: SELECT DISTINCT myfieldname FROM mytable (或者) SELECT myfieldname FROM mytable GROUP BY myfieldname 我至少想在使用原始sql之前以Django方式进行操作。例如,有一个表: 身份证,街道,城市 赫尔大街1号 赫尔其他街2号 3,Bibble Way,莱斯特 4,另一种方式,莱斯特 Londidium高街5号 我想得到: 赫尔,莱斯特,朗迪丁。

13
在MySQL中删除数百万行
我最近发现并修复了我正在处理的站点中的错误,该错误导致表中数百万行数据的重复行,即使没有行,行也将非常大(仍然有数百万行)。我可以轻松找到这些重复的行,并可以运行一个删除查询来杀死它们。问题是试图一次删除这么多行会长时间锁定表,如果可能的话,我想避免这种情况。我看到的摆脱这些行而又不占用站点(通过锁定表)的唯一方法是: 编写一个脚本,该脚本将循环执行数千个较小的删除查询。从理论上讲,这将解决锁定表的问题,因为其他查询将能够使其进入队列并在删除之间运行。但是它仍然会在一定程度上增加数据库的负载,并且需要很长时间才能运行。 重命名表并重新创建现有表(该表现在为空)。然后在重命名的表上进行清理。重命名新表,重命名旧表,然后将新行合并到重命名表中。这种方式需要花费更多的步骤,但是应该以最小的中断来完成工作。这里唯一棘手的部分是,所讨论的表是报表表,因此一旦将其重命名并放了一个空表,所有历史报表都将消失,直到我将其放回原位。另外,由于要存储的数据类型,合并过程可能会有些麻烦。总的来说,这是我现在可能的选择。 我只是想知道以前是否有人遇到过这个问题,如果是的话,您如何在不关闭站点的情况下进行处理,希望对用户的干扰最小(如果有的话)?如果我使用2号或其他类似的方法,我可以将这些内容安排在深夜运行,并在第二天清晨进行合并,并且只需要提前通知用户即可,所以这不是什么大问题。我只是想看看是否有人对更好或更轻松的清理方式有任何想法。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.