0

タフの8つの異なる値のみを入力できる3つの列(Title、Tough、Id)を持つ匿名のテーブルがあります。ここで、データベース内のタフの値ごとに8つの異なるテーブルを作成する必要があることを知りたいです。高速SQLクエリ。

4

4 に答える 4

0

私がすべきことは次のとおりです(タイプがであると仮定してVARCHAR

2つの列(typeId、type)を持つ1つの新しいテーブルを作成します。次に、匿名テーブルへの参照を配置します。これにより、データストレージが削減され、8つの値を1回キャプチャするだけで済みます。次に、これらの8つの値を参照するために数値のみを使用します。

これによりクエリのパフォーマンスが向上するかどうかはわかりませんが、データベースに含まれる冗長データが大幅に少なくなることは間違いありません。

于 2012-05-04T08:08:26.383 に答える
0

列、、、およびを含む別のテーブルを作成するよりも、Typestype_idとを含むテーブルを作成する必要があります。type_nameanonymous_idtitletype_id

2番目のテーブルでtype_idは、テーブルの主キー(type_id)にリンクする外部キーになりますTypes

これにより、テーブルが最適化され、重複データが少なくなり、データベースにすでに存在するタイプのみを許可できるため、はるかにスケーラブルになります。

于 2012-05-04T08:09:18.160 に答える
0

引き続き単一のテーブルを使用して、どのように機能するかを確認することをお勧めします。これにより、アプリケーションの構造が簡素化され、さまざまな問題の視界が妨げられなくなります。

ただし、期限が迫っている場合は、アプリケーションの構造と、インデックスがどのように成長するかを考慮する必要があります。アプリケーションを変更するのが面倒な場合は、解決できない問題に発展するまで、すぐにやり直す必要があります。

于 2012-05-04T08:13:32.637 に答える
0

一般に、データ構造を正規化することを試み、測定によって必要性が示されたら、パフォーマンスについて心配する必要があります。

CREATE TABLE `Anonymous` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `tough_id` INT NOT NULL,
    `title` VARCHAR(64),
    PRIMARY KEY (`id`),
    KEY `idxTough` (`tough_id`)
);

CREATE TABLE `Tough` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(64) NOT NULL,
    PRIMARY KEY (`id`)
);

INSERT INTO `Tough` (`name`) VALUES ('ToughA'), ('ToughB'), ('ToughC'), ('ToughD');

INSERT INTO `Anonymous` (`title`, `tough_id`) VALUES
    ('Anon with tough A', 1),
    ('Anon with tough B', 2),
    ('Anon with tough C', 3),
    ('Anon with tough D', 4)
;
于 2012-05-04T08:39:42.000 に答える