入门基础篇
深入篇
mysql数据库实现多表查询
在sql语言中,用join实现表与表的关联,用on指定联合表的查询条件,如:
#实现三表联查,可以用table1.*,table2.*来排列表格显示信息的先后顺序
SELECT * FROM (`user` LEFT JOIN address ON `user`.id=address.user_id) LEFT JOIN user_info ON `user`.id=user_info.id;
#三表查询指定的数据,多表查询为了区别各表中个字段,使用表名.字段名区别
SELECT
`user`.id,`user`.user_name,`user`.`password`,
address.province,address.city,address.street,
address.street_number,user_info.age,user_info.gender,user_info.hobby,user_info.company
FROM
(`user` LEFT JOIN address ON `user`.id=address.user_id)
LEFT JOIN user_info ON `user`.id=`user_info`.id;
精通篇
sql优化
- 对于表的设计优化,在设置初期不仅要考虑到数据库的规范性,还有考虑到业务,以及性能的影响。比如从数据库规范的角度考虑可能需要分多个表,而在业务方面,庞大数据的联合查询相对于单表来说可能会慢很多,可能需要冗余几个字段。
- 对于sql的优化,特别是进行多表查询的时候,到底是采用INNER JOIN,还是LEFT JOIN,RIGHT JOIN亦或是OUTER JOIN,都需要通过性能测试得出结论。
- 在程序中调用的时候到底是采用懒加载还是非懒加载。
- 最后要用到数据的缓存了,或者在程序与数据库之间再加一层缓存,一般建议用好的数据库缓存