A*******e 发帖数: 284 | 1 有一个大约50000行,1800列的数据,需要设计一个数据库来储存和查询。试着用mysql
,抱怨说太多列,网上查了也说这样多列查询效率很低。请指点。这1800列也不好拆分
。 |
n****f 发帖数: 905 | 2 Please provide more information.
How about the definition of these 1800 fields :-) ? |
A*******e 发帖数: 284 | 3 都是Numeric,实际上是科学实验测量的数据,每个field代表一种实验类型,row代表
样本,既整套数据记录了50000个样本在1800个实验中得到的数据。 |
n****f 发帖数: 905 | 4 so you should have 3 tables:
1 实验类型 Table: TEST_TABLE <- YOU NAME IT
TEST_ID integer PK <- (THE ID OF 实验类型)
DESC VARCHAR2(100) <- (THE DESCRIPTION OF 实验类型)
2 样本 Table: SAMPLE_TABLE <- YOU NAME IT
SAMPLE_ID integer PK <- (THE ID OF 样本)
DESC VARCHAR2(100) <- (THE DESCRIPTION OF 样本)
3 样本-DATA Table: XYZ <- YOU NAME IT
TEST_ID integer PK <- (THE ID OF 实验类型)
SAMPLE_ID integer PK <- (THE ID OF 样本)
SAMPLE_DATA NUMERIC(X, Y) <- (THE DATA)
這種設計方式是比較簡單的。 你也可以加以豐富。
比如, 對實驗進行進一步分類, 或者對於樣本進行進一步分類, 等等。
你原來的設計方法不是很好。 1000 多的列非常死板。 用戶要添加一個新的樣本, 就
必須修改程序和數據庫的表。
而後者的設計方式, 只需要添加幾個 ROW 就可以了。 不知道我說清楚了嗎?
另外我是按照 ORACLE 的標準寫的代碼。 MYSQL 可能有些變化, 您自己調整吧。 |
s**********o 发帖数: 14359 | 5 1800列这么多啊,QUERY的人看都看不过来吧?
把常用的放到一个表里,不常用的按类别放到其它几个表里
反正有PRIMARY KEY就可以了。 |
A*******e 发帖数: 284 | 6 多谢,听君一句话,茅塞顿开!
【在 n****f 的大作中提到】 : so you should have 3 tables: : 1 实验类型 Table: TEST_TABLE <- YOU NAME IT : TEST_ID integer PK <- (THE ID OF 实验类型) : DESC VARCHAR2(100) <- (THE DESCRIPTION OF 实验类型) : 2 样本 Table: SAMPLE_TABLE <- YOU NAME IT : SAMPLE_ID integer PK <- (THE ID OF 样本) : DESC VARCHAR2(100) <- (THE DESCRIPTION OF 样本) : 3 样本-DATA Table: XYZ <- YOU NAME IT : TEST_ID integer PK <- (THE ID OF 实验类型) : SAMPLE_ID integer PK <- (THE ID OF 样本)
|
T*******x 发帖数: 8565 | 7 这个好。
【在 n****f 的大作中提到】 : so you should have 3 tables: : 1 实验类型 Table: TEST_TABLE <- YOU NAME IT : TEST_ID integer PK <- (THE ID OF 实验类型) : DESC VARCHAR2(100) <- (THE DESCRIPTION OF 实验类型) : 2 样本 Table: SAMPLE_TABLE <- YOU NAME IT : SAMPLE_ID integer PK <- (THE ID OF 样本) : DESC VARCHAR2(100) <- (THE DESCRIPTION OF 样本) : 3 样本-DATA Table: XYZ <- YOU NAME IT : TEST_ID integer PK <- (THE ID OF 实验类型) : SAMPLE_ID integer PK <- (THE ID OF 样本)
|