我可以在一个数据库操作中将列中的每个值乘以一定数量吗?

时间:2015-05-02 23:56:47

标签: mysql sql ruby-on-rails ruby database

我有一个Rails块,它将列中的每个值乘以1.1。有没有办法将其压缩为一个或几个数据库操作,而不是每行一个?

@Path("/students")

public class StudentResource {
   @PUT
   @Path("/{studentID}/update")
   public void updateStudentInfo(@PathParam("studentID")                                
                                 studnetId,StudentInfo info) {
    //studentInfo will get updated
   }
}

我的物品表就像1000行一样,所以我担心这可能会对我的服务器产生过度压力。

1 个答案:

答案 0 :(得分:4)

这可以在包含 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setContentView(R.layout.pass_list); ButterKnife.inject(this); AXT.at(openFileFAB).setVisibility(Build.VERSION.SDK_INT >= VERSION_STARTING_TO_SUPPORT_STORAGE_FRAMEWORK); final LinearLayoutManager llm = new LinearLayoutManager(this); llm.setOrientation(LinearLayoutManager.VERTICAL); (!!here!!) recyclerView.setLayoutManager(llm); 和位update_all的Rails中完成:

SQL

另一个选项是纯Item.update_all('value = value * 1.1') (例如在数据库控制台中):

SQL

或者分批,这对数据库的压力不大,但需要更长的时间:

UPDATE items SET value = value * 1.1;

构建数据库以每秒处理数百万行和数千次读写操作。从这个角度来看,1000行的表很小,一次更新所有行对于数据库来说根本不是问题。数据库不关心是否存在大量或数千个小更新。

但应用程序可能存在问题。如果您有更大的数据库和许多用户,则需要考虑一些因素。

想象一下,你有一个包含数百万行的表。

从数据库的角度来看,一次更新所有行可能比批量更新行(甚至逐个更新)更快。但是,一次更新所有行可能会在该操作期间阻塞整个表,或者至少减慢数据库的响应时间。该表上的读取操作将非常缓慢,用户将获得糟糕的体验。

批量更新(或每一行)需要更长时间,但应用程序不会减慢速度。快乐的用户......!