表列是否会增加select语句的执行时间

时间:2012-09-17 15:27:55

标签: mysql performance

我有2个表,相同的结构,相同的行,相同的数据,但第一个有更多的列(字段)。

例如:

我从它们两个中选择相同的3个字段(SELECT a,b,c FROM mytable1然后SELECT a,b,c FROM mytable2)

我试图在100,000条记录上运行这些查询(对于每个表),但最后我得到了相同的执行时间(0.0006秒) 你知道列的数量(最后一个表的大小是否大于另一个表)是否必须对查询执行时间做些什么?

4 个答案:

答案 0 :(得分:1)

这会影响执行时间,但我认为列/行大小的线性增加会产生边际效应。由于MySQL仍然需要处理/显示额外数据,因此它无法实现零效果。

关键点(在我看来)将选择您需要选择的列和行。

答案 1 :(得分:1)

逻辑上它会影响执行时间,如果包含更多列的表上的数据更大,您可能会看到差异。 防爆。表1:500mb,表2:40mb。 如果数据集索引不再适合内存,性能会下降。然后磁盘性能步骤。

答案 2 :(得分:1)

IMO。只选择正确的列会影响交付时间(从数据库服务器到应用程序服务器)并影响内存,因为应该存储和传输更多数据。

答案 3 :(得分:1)

在您的示例中,您从表中选择了相同的三列。有几种方法可以让我想到有哪些额外的列(但不选择它们)会产生很小/没有影响:

  1. 如果您选择的所有列都在索引中,MySQL将不必从磁盘读取基础行。
  2. 如果新列是VARCHAR,我相信页面大小基本不变(因为VARCHAR确实是指针)。
  3. 如果新列很小(例如,TINYINT,只有1个字节)。
  4. 通常,更窄的表格会为您带来更好的表现。

    如果你想尝试一个例子,抛出一些大的CHAR(而不是VARCHAR)并在你的测试查询中选择那些列。我希望情况会更糟。

    希望有所帮助。