我有一个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行一样,所以我担心这可能会对我的服务器产生过度压力。
答案 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行的表很小,一次更新所有行对于数据库来说根本不是问题。数据库不关心是否存在大量或数千个小更新。
但应用程序可能存在问题。如果您有更大的数据库和许多用户,则需要考虑一些因素。
想象一下,你有一个包含数百万行的表。
从数据库的角度来看,一次更新所有行可能比批量更新行(甚至逐个更新)更快。但是,一次更新所有行可能会在该操作期间阻塞整个表,或者至少减慢数据库的响应时间。该表上的读取操作将非常缓慢,用户将获得糟糕的体验。
批量更新(或每一行)需要更长时间,但应用程序不会减慢速度。快乐的用户......!