假设我有一个包含多列的表。选择所有列或仅选择列的子集(如下所示)之间是否存在速度差异?
SELECT * FROM Table WHERE colX = "value"
SELECT col1, col2, col3 FROM Table WHERE colX = "value"
假设我有一个包含多列的表。选择所有列或仅选择列的子集(如下所示)之间是否存在速度差异?
SELECT * FROM Table WHERE colX = "value"
SELECT col1, col2, col3 FROM Table WHERE colX = "value"
除非您需要所有列,否则不应选择所有列。相反,您应该通过简单地为所需的每一列输入 tablename.columname 来选择所需的那些。
从原始表中,实际查询本身将花费相同的时间。但是,返回的结果会有所不同。而且,对于这样一个简单的查询,这可能会占主导地位。
如果表包含非常大的列,那么记录将跨越多个页面(“溢出”页面),那么可能存在性能差异。我认为不会一次将所有溢出页面读入内存。因此,仅显式引用不包含大列的列子集可能会更快。在 MySQL 中如何处理这也可能取决于正在使用的文件系统。
但是,如果“表”真的是一个视图,那么它可能会产生很大的影响。此外,一些数据库支持计算/计算列。如果这些存在,那么这可能会对性能产生影响。
此外,一些数据库是面向“列”的,其中列实际上是单独存储的。在这样的数据库中,这些查询版本之间的性能可能存在很大差异。