|
|
1
1
这里没有明确的答案。如果大多数记录的默认值为“n”,那么在第一种情况下,您的效率将是最好的。在第二种情况下,最好是在大多数情况下默认为“Y”。 因此,如果大多数用户只有一个电子邮件地址,请使用第二个查询。如果大多数用户至少有2个,请使用第一个。 |
|
|
2
5
有99%的把握,我可以说第一个查询会更有效。 很可能你的集群密钥是用户ID,所以你的更新语句会很快找到要更新的行。在SQL Server中,更新从逻辑上实现为先删除后插入,因此它可能是一个相当昂贵的操作(相对于简单的查找而言)。 再加上更新需要对记录使用独占锁这一事实,所有符号都指向语句1。 |
|
|
3
1
为什么不自己试试呢?在SQL Management Studio中,逐个运行这两个查询,并启用“包括实际执行计划”。百分比越高,查询越慢。 |
|
|
4
1
在Oracle方面,我会选择选项1。某种程度上。 我有一个独特的索引强制每个用户只有一个默认条目,然后我将使用该索引中的函数作为更新的一部分。只更新需要更新的行。此外,唯一索引还可以最小化为给定用户获取默认电子邮件所需的工作,不仅是为了更新,而且还可以在使用该函数获取行的任何地方进行。
ps.“where default='y'check”的开销非常小,因为您无论如何都需要访问该列来更新它。 |
|
|
5
0
查询的速度取决于几个因素,例如表中的行数、索引、检查约束以及外键和主键。 至少在SQL Server中,确定哪个更快的最佳方法是在运行查询时使用include客户机统计信息和执行计划。比较每种方法的时间并选择最佳方法。 |
|
|
Shayan Khan · IBM DB2中出现此错误的原因是什么 2 年前 |
|
|
Oidipous_REXX · 仅按日期查询DB2时间戳列 2 年前 |
|
|
EJ Lin · 如何根据日期显示当前信息库 2 年前 |
|
|
Bernd · 在DB2SQL中将字符串中的第113个位置替换为“X” 3 年前 |
|
|
Thomas · 生成列与触发器列的性能优化 3 年前 |
|
|
Rogue258 · 在DB2SQL中使用存储过程/宏进行声明和循环 4 年前 |
|
|
HHH · 在DB2中导入数据失败 8 年前 |
|
|
ciprian · db2 python[处理失败] 8 年前 |