最近在看mysql select的原理
但是很多只提到了select的一个流程,没有说明mysql生成结果集在mysql中是怎么处理的,是一行一行的发给客户端呢,还是先产生一个临时内存区域,在将内存区域中保存的结果集发给客户端。
例如,a join b on a.id =b.id where a.test>6 and b.cc<3,看过人的一个gdb测试
1.三个条件
a.test > 6
a.id = b.id
b.cc<32.先通过a.test>6过滤a表,(那么过滤a表之后的临时结果放那?如果是内存,那么多个查询就会导致内存不够,如果过滤后条目比较多的话)
3.然后过滤b表,并通过b.id=a.id过滤a,b表,产生结果集(这结果集是不是也需要存在内存呢)
但是很多只提到了select的一个流程,没有说明mysql生成结果集在mysql中是怎么处理的,是一行一行的发给客户端呢,还是先产生一个临时内存区域,在将内存区域中保存的结果集发给客户端。
例如,a join b on a.id =b.id where a.test>6 and b.cc<3,看过人的一个gdb测试
1.三个条件
a.test > 6
a.id = b.id
b.cc<32.先通过a.test>6过滤a表,(那么过滤a表之后的临时结果放那?如果是内存,那么多个查询就会导致内存不够,如果过滤后条目比较多的话)
3.然后过滤b表,并通过b.id=a.id过滤a,b表,产生结果集(这结果集是不是也需要存在内存呢)
解决方案 »
- 在mysql用这个算法,是否能保证分批处理了全部记录,并每条记录只处理了一次
- 大数据量表分表后如何实现关系查询?
- MySQL连接错误
- 求教MySQL_Front 配置出错
- mysql中 不同数据库间 不同表结构的表之间的数据传输问题
- id in 和 id=n or id=n2.....!哪个效率高?
- postgresql 还原数据库问题
- mysql向表里写入动态获取的字符串,由于字符串过长,求截断的问题。
- 编译MySQL自带examples目录下的例子,提示找不到typelib.h
- 【求助】新人,关于c++使用mysql的mysql_free_result,100分
- 数据库1168 错误
- Sql 批量插入300条insert语句最快用时多长?
二、内存不足时,操作系统会使用虚拟内存。
三、具体的查询要看数据库系统产生的执行计划。
恩呢 但是我猜想mysql应该对内存有一定的优化,或者说是当数据大的时候,肯定有相关的机制保证!
本版等级:T1
结帖率:0%当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
http://bbs.csdn.net/help#post_dispose