我有一个关于mysql表的性能和最佳实践问题。我正在开发一个连接到数据库的应用程序,该数据库由其他程序填充。这个系统部署在不同的位置,从一个位置到另一个位置,一些数据库的名称-表可以改变(但这些表中的字段保持不变)。
因为我不想更改应用程序中每个位置的所有sql查询,所以我考虑创建一个mysql视图,它只是将这个表的内容映射到正常使用的表名。
这是一个合适的解决方案吗,或者它在处理大表格时会变得非常慢吗?
发布于 2017-07-17 19:46:29
简单视图(创建为SELECT * FROM table)的行为类似于指定的表性能。
它应该是适合您的情况的解决方案。
发布于 2017-07-17 20:09:44
嗯,这很棘手。如果有多个表,那么一个快速而粗糙的版本如下所示
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分钟,但一切都会很容易,像梦一样运行。
https://stackoverflow.com/questions/45143255
复制相似问题