例如,如果我想在会话期间频繁更新用户的分数,有比-UPDATE score FROM[databaseName]WHERE name=[username]更高效的方法吗
我觉得我不应该在之前找到值的位置时继续搜索整个数据库。
提前感谢
如果在name
:上有索引,就不会搜索整个数据库
create index idx_<table>_name on <table>(name);
其中<table>
是您所引用的表的名称,而不是数据库。
顺便说一句,如果要更新表,可以使用update
,而不是select
。但update
仍然可以使用该索引。
您可以在这里使用属性,您可以在需要时只搜索和更新数据库。
private int score;
public int Score
{
get
{
score = searchDatabase();
return score;
}
set
{
UpdateDatabase(value);
score = value;
}
}
Debug.Log(Score);
脑海中唯一与您提到的值的位置相似的是具有搜索值的行的主键列的值
因此,如果表中的主键是id
,并且您只有该人的name
,则可以查询一次以获得该行的id
:
SELECT id FROM tablename WHERE name = ?
然后在所有后续更新中使用该id
:
UPDATE tablename SET score = ? WHERE id = ?
这是最快的更新方式。