使用Where还是Join?
以前确实没有注意过,但是使用Where条件连接表可能会降低运行速度。
1)Select ... ...From TA,TB,TC Where TC.col3 = TA.col1 And TC.col3=TB.col2 And TC.col4=1
这个查询隐含TA.col1=TB.col2,但是没有直接设定这个条件。如果TA和TB每个表都包含100条记录,那么将有10000组合将和TC关系起来。
2)Select... ... From TA join TB on TA.col1=TB.col2 join TC on TB.col2=TC.col3 Where TC.col4=1
在组合TC之前,TA.col1=TB.col2条件直接缩小TA和TB的行数,提高速度。
3)Select ... ...From TC join TB on TC.col3 = TB.col2 join TA on TC.col3=TA.col1 Where TC.col4 = 1
这个查询可以提高一大步,如果改变表的顺序,所以TC.col4=1将最先使用,这样更小的集合将组合到一起。
关于数据库中随机取记录的
SQL Server: Select top 10 * From Table Order by newid()
Oracle:有一个行数函数 rownum