我有关于mysql表的性能和最佳实践问题。 我正在开发一个连接到数据库的应用程序,该数据库由其他程序填充。 此系统部署在不同的位置,从一个位置到另一个位置,某些数据库表的名称可以更改(但此表中的字段等保持不变)。
由于我不想在我的应用程序中为每个位置更改所有sql查询,我考虑创建一个mysql视图,它只是将此表的内容镜像到正常使用的表名。
这是一个合适的解决方案,还是大桌子会变得非常慢?
答案 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分钟,但一切都会非常简单,像梦一样。