我们程序员开发当中,在做数据库持久化操作的时候.经常需要多表一起关联查询.除了对报表那块是由DBA给出SQL之外.其它的业务大多都是自己写SQL实现.
听到过很多必须这样做.但一直不知道具体原因.所以想发贴出来请教一下坛内高手.
例如现在有三个表,User_Info ,User_Job,User_Address.现在我写出两种SQL方式
(省略前面的select ...)
From User_Info u,User_Job j,User_Address a WHERE u.uid=j.uid AND u.uid=a.uid
这是一种写法.另一种写法:
From User_Info u INNER JOIN User_Job j ON u.uid=j.uid
INNER JOIN User_Address a ON u.uid=a.uid
(两种写法都省略SELET部分及其它WHERE子条件)
问题一.这两种SQL写法研究那种性能更高一些?它们的区别究竟有多大呢?
问题二.在第一种写法中.
u.uid=j.uid AND u.uid=a.uid这种多表关联的过滤条件.是紧跟着WHERE 后面查询效率更高,
还是跟在其它的更大的过滤子条件例如 u.uid=123 这种后面性能高呢?现在有的人与我说
紧跟WHERE后面效率要高些,也有的人说跟在u.uid=123后面高些.请问该听谁的?原因又是为什么呢
记得阅读相关资料也是说过滤条件越大放的位置越接近where性能越高.
问题三.像这种多表,如三到四个表,需要建立视图来查询吗?这样效率是否更高些.但相关说明却又告诉我这样
这样并不一定会效率更高,但能便于我们查询方便.
一口气,说了三个.谢谢热心朋友的指点.
听到过很多必须这样做.但一直不知道具体原因.所以想发贴出来请教一下坛内高手.
例如现在有三个表,User_Info ,User_Job,User_Address.现在我写出两种SQL方式
(省略前面的select ...)
From User_Info u,User_Job j,User_Address a WHERE u.uid=j.uid AND u.uid=a.uid
这是一种写法.另一种写法:
From User_Info u INNER JOIN User_Job j ON u.uid=j.uid
INNER JOIN User_Address a ON u.uid=a.uid
(两种写法都省略SELET部分及其它WHERE子条件)
问题一.这两种SQL写法研究那种性能更高一些?它们的区别究竟有多大呢?
问题二.在第一种写法中.
u.uid=j.uid AND u.uid=a.uid这种多表关联的过滤条件.是紧跟着WHERE 后面查询效率更高,
还是跟在其它的更大的过滤子条件例如 u.uid=123 这种后面性能高呢?现在有的人与我说
紧跟WHERE后面效率要高些,也有的人说跟在u.uid=123后面高些.请问该听谁的?原因又是为什么呢
记得阅读相关资料也是说过滤条件越大放的位置越接近where性能越高.
问题三.像这种多表,如三到四个表,需要建立视图来查询吗?这样效率是否更高些.但相关说明却又告诉我这样
这样并不一定会效率更高,但能便于我们查询方便.
一口气,说了三个.谢谢热心朋友的指点.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/404101/viewspace-157003/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/404101/viewspace-157003/