问题描述
嗨,汤姆,
使用 “从表1中选择 *” 和 “从表1中选择 *” 有什么区别。
观察到,在执行select语句时
“选择a.* 从表1 a” 锁定更新的数据 (如如果我们使用来自PLSQL developer的语句,提交,回滚按钮将是活动的),如果我使用 “从表1选择 *” 这些按钮没有被激活。有了这个,我想了解是否有任何性能影响,如果我使用select语句与.*。
假设我正在通过使用 “select a.* 从table1 a” 执行插入语句来10亿记录,这会影响性能吗?
提前谢谢你。
亲切的问候
本西
使用 “从表1中选择 *” 和 “从表1中选择 *” 有什么区别。
观察到,在执行select语句时
“选择a.* 从表1 a” 锁定更新的数据 (如如果我们使用来自PLSQL developer的语句,提交,回滚按钮将是活动的),如果我使用 “从表1选择 *” 这些按钮没有被激活。有了这个,我想了解是否有任何性能影响,如果我使用select语句与.*。
假设我正在通过使用 “select a.* 从table1 a” 执行插入语句来10亿记录,这会影响性能吗?
提前谢谢你。
亲切的问候
本西
专家解答
除非您正在进行SELECT-FOR-UPDATE,否则 * database * 中的任何内容都不会使用SELECT锁定数据。
第三方工具当然可以做什么。
您将看到select * 和select a之间的性能差异可以忽略不计 (我们说的是纳秒)。*
但是,通常认为最好的做法是在查询 (select列,where子句列等) 中别名 * everything *,因为它使您的代码更健壮。
例如,假设 “所有者” 来自my_table1,“名称,地址” 来自my_table2,那么以下工作就可以了:
但是当有人向my_table1添加一个名为 “name” 的列时,查询中断,因为我们无法解析应该使用哪个表。
相反
不会破裂。
第三方工具当然可以做什么。
您将看到select * 和select a之间的性能差异可以忽略不计 (我们说的是纳秒)。*
但是,通常认为最好的做法是在查询 (select列,where子句列等) 中别名 * everything *,因为它使您的代码更健壮。
例如,假设 “所有者” 来自my_table1,“名称,地址” 来自my_table2,那么以下工作就可以了:
select owner, name, address from my_table1, my_table2 where [join conditions]
但是当有人向my_table1添加一个名为 “name” 的列时,查询中断,因为我们无法解析应该使用哪个表。
相反
select a.owner, b.name, b.address from my_table1 a, my_table2 b where [join conditions]
不会破裂。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




