|
asdf2110 发表于 2016-01-19 15:22
你这是从应用的角度看
从数据库实现角度看,innodb 属于行存储引擎,数据库从磁盘读取数据时也不是你想的那样一个字段一个字段的读,而是按页面读取,比如8K,这8K页面里面可能包含100行数据,然后再一行行读出来,判断是否满足了 where 的过滤条件,满足了,还要再看投影,就是你说的select后面的列,决定哪些列返回给客户端。
这个过程比较耗费时间的就是 8K页面从磁盘读到内存,当表比较大时,这样的8k 页面就比较多了;按列拆分的话IO自然降低了,当然 增加了 JOIN 的开销,所以拆分也要谨慎。
不知道有没有说清楚。 谢谢你的回复,很清楚。 |
|