Mysql入门系列:MySQL查询优化程序
2006-12-31 10:46:06 来源:WEB开发网核心提示: 实际上,还有另外的方法,Mysql入门系列:MySQL查询优化程序(6),即升级到MySQL3.23.2 或更高的版本,它们已经解决了这样的问题,查询执行得就越快,要保证测试相应的查询两次;可能会有某些原因使优化程序不以您所想像的方式对表进行连接,■ 以随机次序检索结果,自MySQL3.2
实际上,还有另外的方法,即升级到MySQL3.23.2 或更高的版本,它们已经解决了这样的问题。
■ 以随机次序检索结果。自MySQL3.23.3 以来,可使用ORDER BY RAND( ) 随机地对结果进行排序。另一技术对MySQL更旧的版本很有用处,那就是选择一个随机数列,然后在该列上进行排序。但是,如果按如下编写查询,优化程序将会让您的愿望落空:
这里的问题是MySQL认为该列是一个函数调用,将认为相应的列值是一个常数,而对ORDER BY 子句进行优化,使此查询失效。可在表达式中引用某个表列来蒙骗优化程序。例如,如果表中有一个名为age 的列,可编写如下查询:
■ 忽略优化程序的表连接次序。可利用STRIGHT_JOIN 强迫优化程序以特定的次序使用表。如果这样做,应该规定表的次序,使第一个表为从中选择的行数最少的表。(如果不能肯定哪个表满足这个要求,可将行数最多的表作为第一个表。)换句话说,应尽量规定表的次序,使最有限制性的选择先出现。排除可能的候选行越早,查询执行得就越快。要保证测试相应的查询两次;可能会有某些原因使优化程序不以您所想像的方式对表进行连接,并且STRAIGHT_JOIN 也可能实际上不起作用。
更多精彩
赞助商链接