【发布时间】:2013-10-31 09:16:08
【问题描述】:
我尝试制作一个数据库方案。我只是想知道哪种方法比其他方法更好。 我有两种方法可以从我的数据库中完成搜索任务。 条件如下: 我有多个表名作为 table1,table2..tablen 具有相同的结构,表示不同的位置。
我的工作方式如下:
- 使用我的 TABLES 的 UNION 制作 VIEW 并使用如下查询:
Select * from my_view where my_condition;"。 -
通过使用简单的 UNION 运算符并使用如下查询:
select * from table1 where my_condition UNION select * from table2 where my_condition UNION ... .. select * from tablen where my_condition
所以我的问题是我想要一个更快的解决方案,请帮助我在 VIEW 和 UNION 之间进行选择。如果您有任何其他解决方案,例如 mysql cluster SCALABLITY,请告诉我。
【问题讨论】:
-
如果您有多个具有相同结构的表,那么您有一个设计问题...创建一个表,并在该表中添加一个位置列 - 那么使用 UNION 就变得多余了
-
@MarkBaker 我们已经在我之前的帖子中讨论过这个话题。但是我有很多数据的问题,我害怕响应速度。我想要一个胖子响应数据库方案。
-
是的,我们已经讨论过了;然后您选择忽略我使用单个表的建议。如果您不拆分多个表,您将获得一个响应更快、响应速度更快的数据库,UNION 将是一个很大的开销,因为您必须执行 n 个单独的选择(其中 n 是您要合并的表的数量)然后加入每个结果......虽然 MySQL 可以通过并行化等技术为您稍微减少这种开销,但它永远不会接近访问单个表的速度
-
您认为数百万条记录是“大数据”,会给您带来性能问题。不是大数据!如果组织和索引正确,单个表不会出现性能问题......如果你觉得你需要做某事(即使它可能对你的小数据量来说可能是矫枉过正),我建议分片,你忽略了这个建议。 .. 然而,您选择采取的方法会产生严重的性能影响,并且管理和管理的问题要大得多
-
@MarkBaker 我喜欢你对分片的建议,但由于我是新手,所以我不太了解分片和并行化是如何工作的。你能告诉我如何在单个表中正确索引我的数据.
标签: php mysql sql sql-server