Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更有效的方法是在Rails中销毁所有内容?_Sql_Ruby On Rails_Postgresql_Activerecord_Performance - Fatal编程技术网

Sql 更有效的方法是在Rails中销毁所有内容?

Sql 更有效的方法是在Rails中销毁所有内容?,sql,ruby-on-rails,postgresql,activerecord,performance,Sql,Ruby On Rails,Postgresql,Activerecord,Performance,有没有一种更快的方法来销毁rails中的所有内容 我这样问是因为rails对每个记录执行单独的删除sql查询 例如,在搜索4条记录时调用destroy all将运行4个delete sql命令 Blerg.where("created_at > yesterday").destroy_all (4 results) 然后打电话给 DELETE FROM "blergs" WHERE "blergs"."id" = $1 [["id", 197782]] 4次 有没有办法把它放到一个s

有没有一种更快的方法来销毁rails中的所有内容

我这样问是因为rails对每个记录执行单独的删除sql查询

例如,在搜索4条记录时调用destroy all将运行4个delete sql命令

Blerg.where("created_at > yesterday").destroy_all (4 results)
然后打电话给

DELETE FROM "blergs" WHERE "blergs"."id" = $1  [["id", 197782]]
4次

有没有办法把它放到一个sql命令中?

您可以随时调用

Blerg.where("created_at > yesterday").delete_all
这只提供一个查询:

DELETE FROM "blergs" WHERE (created_at > '2012-11-26 16:27:56.678872')
请注意,这不会对要删除的对象调用任何回调。

您也可以这样做

Blerg.delete_all("created_at > '2012-11-01 00:00:00'")

哪个更简洁。它执行一条SQL语句。

回调是一个重要的问题。如果您有任何:dependent=>:destroy关系,它们也不会被删除。是的,任何寻找此答案的人都应该注意不要回调,这非常重要。