データベースは間違いなく答え(何百万人を検索、または数百万行の百であるあなたがSQLのこつ(データベースと対話するための言語)を得れば非常に簡単です。私は
のテーブル構造をお勧めします
EngineId, TestId, TourqueId, PowerId, YieldValue
値を持っているでしょう
...
Engine1、Test1を、2000年、1.0、73.2
だから、唯一の5列。これはあなたにそれがあるべき将来的にはより多くの収量結果を追加するための柔軟性を提供します必要な場合(またはそうでない場合でも、とにかく簡単なスキーマ)。ただし、スプレッドシートでデータベースの機能を実現するには、SQLを学ぶ必要があります。また、ExcelデータをSQLにインポートする方法はたくさんありますので、それを調べる必要があります(Googleにあります)。あなたが手ですべてのデータを転送しているとわかったら、間違ったことをしています(本当に間違っていませんが、非効率です)。
あなたのコメントにさらに
、ここでインデックスと正確なスキーマは(MS SQL Serverで)ある
CREATE TABLE [dbo].[EngineTestResults](
[EngineId] [varchar](50) NOT NULL,
[TestId] [varchar](50) NOT NULL,
[Tourque] [int] NOT NULL,
[Power] [decimal](18, 4) NOT NULL,
[Yield] [decimal](18, 4) NOT NULL,
CONSTRAINT [PK_EngineTestResults] PRIMARY KEY CLUSTERED
(
[EngineId] ASC,
[TestId] ASC,
[Tourque] ASC,
[Power] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Index [IX_EngineTestResults] Script Date: 01/14/2012 14:26:21 ******/
CREATE NONCLUSTERED INDEX [IX_EngineTestResults] ON [dbo].[EngineTestResults]
(
[EngineId] ASC,
[TestId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
だから、何のインクリメントの主キーが存在しないことに注意してください...キーは(ENGINEID、テストID、トルクであります、 力)。私は基準のそのセットのインデックスを追加した
Select * from EngineTestResults where engineId = 'EngineABC' and TestId = 'TestA'
注:特定のエンジンの結果を取得するには、次のようなクエリを実行します。
Excelからのインポートは問題ありません。私はAce.OLEDBアダプターを使用しました。しかし、データベースそのもののデザインが私を夢中にしています – dotNes
私はこの答えに同意します。@dotNes、EngineId列とTestid列にインデックスを作成すると、何百万行もある場合でもクエリがすぐに実行されます。 (あなたのdbmsが完全に不自然ではないと仮定します)。このテーブル構造では、テスト結果を列にクロス集計するためのコードを記述する必要があります。 –
上記の表は意味がありますか?うまくいけば説明できるようにいくつかの値を追加します。 –