下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的。对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握。并逐步做到:在应用中发展,在发展中应用。
继续阅读全文
以上两种方法,一种是老方法,另外一种是改进的方法。两种方法各有自己的优缺点。第一种方法,对sort_buffer_size的占用主要是排序的字段以及一个row pointer,这种方式对排序内存的占用较少,可以有效的减少磁盘排序,但坏处也相当的明显,要对表进行两次扫描,第二次是要根据排好序的字段的row pointer指针回表取数据,这种方式,随着排序行数的加大,对时间的消耗将会变得无法忍受(类似于oracle的nested loop)。老方法受到两个参数的影响:sort buffer size以及read_rnd_buffer_size。
如果采用改进型方法,这种新方法,只会扫描表一次,由于在一次扫描表时,取出了查询所有需要的字段,不仅包括排序字段,全都要放在排序内存(sort buffer)里,对排序内存的需求量比较大一些,如果是对少量结果集进行排序,这种新方法与老方法的性能差异并不会太明显(此前提是在并发量较低的情况下,如果这样的排序的SQL执行频率较高,那么新方法相对老方法,优势也比较明显),因为老方法在经过第一次数据扫描后,需要排序的少量的行都在内存里,第二次也只是到内存里取,这个速度相对来说,还是比较快的。如果是大量行的排序,新方法的优势便会体现出来。
对于少量行的排序,这个工作,还是交给应用层来做最合适,也多不了几行代码。
继续阅读全文