MySQL使用视图访问不同名称

时间:2017-07-17 11:36:32

标签: php mysql

我有关于mysql表的性能和最佳实践问题。 我正在开发一个连接到数据库的应用程序,该数据库由其他程序填充。 此系统部署在不同的位置,从一个位置到另一个位置,某些数据库表的名称可以更改(但此表中的字段等保持不变)。

由于我不想在我的应用程序中为每个位置更改所有sql查询,我考虑创建一个mysql视图,它只是将此表的内容镜像到正常使用的表名。

这是一个合适的解决方案,还是大桌子会变得非常慢?

2 个答案:

答案 0 :(得分:1)

简单视图(创建为SELECT * FROM table)的行为类似于指定的表性能。

它应该是适合您案例的解决方案。

答案 1 :(得分:0)

嗯,这很棘手。如果有多个表,那么快速和脏的版本就像

SELECT * FROM (SELECT * FROM table1
Union
SELECT * FROM table2
Union
SELECT * FROM table3) t

我认为这将有效。您当然会遇到分页,排序和搜索问题 - 因为您必须尝试在3个或更多表格中执行此操作。

另一种方式是这个

使用表名和计数器

创建一个表
ImportTable
name
id

现在,您可以输入表的名称以及要从中导入的最后一个ID。

创建另一个表来导入记录

TableRecords
source
id 
field1
field2
 etc

现在运行通过ImportTable中的表格的内容获取任何新记录并将它们推送到“TableRecords”。

现在这变得非常简单,您可以查询TableRecords并进行分页排序和搜索,而不会遇到以前的麻烦。

每2分钟做一次这样的事情,所以TableRecords落后2分钟,但一切都会非常简单,像梦一样。