如今,网上许多文章都已明确地指出:使用“SELECT * ”作为SQL查询方式是一种极其危险的代码书写习惯。开发人员应该尽量在自己的程序中避免出现此类查询,取而代之的应该是明确地指定要查询的列名。不过,大家可能只是“知其然,而不知其所以然”。在本文中,让我向各位初级开发人员详细解释,此类SQL查询***实践背后的具体原因。
首先,我们经常面对的客观情况是:在Oracle数据库中,许多SQL开发人员都是从接触“SELECT * from EMP”(EMP为表的名称)之类的查询语句,开始学习SQL语言的。因此,除非能够给出充分的理由,否则我们很难撼动他们使用此类便捷查询语句的习惯。
下面,我将根据自己在应用编程中的实际经验,向大家证明使用Select * from table进行SQL查询的“七宗罪”。
1. 不必要的I/O(输入/输出)
通过使用SELECT * ,您虽然可以获得一些完全可以被忽略的返回数据,但是该获取过程可并不是免费的。那些本来可能只需要从索引页面中读取的数据检索,如今您却不得不从各个页面中以全量的方式读取出来。显然,此举会导致数据库端白白浪费各种有限的I/O周期。
另外,该方式也可能会拖慢您的查询速度。如果您好奇并想探究数据库后台的查询执行过程,以及查询引擎是如何顺次处理查询语句的话,我建议您
相关文章
标签:Oracle