SQL查询:将结果放入名为结果名称的表中

时间:2013-05-09 14:44:19

标签: sql

我有一个非常大的数据库,我想分成表格。我想这样做,当我运行一个独特的,它将为每个不同的名称制作一个表。表的名称将是其中一个字段中的数据。

EX:

A    ---------   Data 1
A    ---------   Data 2
B    ---------   Data 3
B    ---------   Data 4 

将导致2​​个表,1个名为A,另一个名为B.然后整行数据将被复制到该字段中。

select distinct [name] from [maintable]
-make table for each name
-select [name] from [maintable]
-copy into table name
-drop row from [maintable]

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

我会建议你不要这样做。

一种解决方案是创建索引,以便您可以快速访问数据。但是,如果你只有少数几个名字,这可能不是特别有效,因为索引值几乎可以选择所有记录。

另一种解决方案是称为分区。确切的机制因数据库而异,但基本思想是相同的。表格的不同部分(在您的情况下由name定义)将存储在不同的地方。当查询仅查找特定名称的值时,只会读取该数据。

通常,使多个表具有完全相同的数据列是不好的设计。以下是一些原因:

  • 添加列,更改类型或添加索引必须完成一次而不是一次。
  • 在表格的列上强制执行主键约束非常困难 - 您丢失了主键。
  • 触及多个名称的查询会变得复杂得多。
  • 插入和更新更复杂,因为您必须先识别正确的表格。这通常会导致过度使用动态SQL以进行其他基本操作。

虽然可能会有一些简化(考虑到安全性),但大多数数据库都有其他机制优于将数据拆分为单独的表。

答案 1 :(得分:0)

你想要的是

CREATE TABLE new_table
  AS (SELECT .... //the data that you want in this table);