也试MySQL数据库分割与跨库查询

来源:互联网 发布:编程员招聘 编辑:程序博客网 时间:2024/06/05 05:46
想把生产管理系统布置到虚拟主机上,于是找虚拟主机找了很久,都对数据库有较多限制或者比较贵。最后看看godaddy的虚拟空间,SQL只能建大小不超过200M的库,MySQL可以建多个数据库,但每个都不能超过1G大小。

由些就想到了把数据分配到各个数据库。其实在现实中,为了性能与安全等方面的考虑是经常这样做的。这就涉及跨库查询,当然,前提是所建的库在同一台计算机的同一MySQL实例中。

初略想了一下,把数据库分为如下几个

中心数数据库
用户数据库
主要数据字段,就是最核心业务的数据,比如超市里的出货。
第三点有可能有多个数据库,比如生产单上某项数据对应表记录较多,则独立出来;如果库存较多,则也独立出来。

初略试一下多库连接查询,其实也很简单,就是在表前加上库名,库名与表名用点分开,当然,查询中为了方便可以使用别名。还有一个前提,就是登录的用户对两个库中的两个表都有访问权限。

简单测试了一下,查询结果如下 :

mysql> select * from a.student as x left outer join b.teacher as y on x.tea_no =
y.tea_no;
+——–+———-+——–+———-+
| tea_no | stu_name | tea_no | tea_name |
+——–+———-+——–+———-+
| 1 | Tom | 1 | Wang |
| 3 | Kate | NULL | NULL |
| 2 | John | 2 | Zhang |
+——–+———-+——–+———-+
3 rows in set (0.03 sec)

mysql> select * from b.teacher ;
+——–+———-+
| tea_no | tea_name |
+——–+———-+
| 1 | Wang |
| 2 | Zhang |
+——–+———-+
2 rows in set (0.00 sec)

mysql> select * from a.student ;
+——–+———-+
| tea_no | stu_name |
+——–+———-+
| 1 | Tom |
| 3 | Kate |
| 2 | John |
+——–+———-+
3 rows in set (0.02 sec)

mysql>

总的来说,确实比较简单,与同库基本无差别!


柚米网:http://www.umifanli.com/     聚爱买:http://www.juimai.com/