2

ユーザーが Web サイトにサインアップし、20 枚の画像を自分のアカウントにアップロードできる Web サイトを作成したいと考えています。(将来、ユーザーが無制限に画像をアップロードできるようにする予定です)

データベースに 2 つのテーブルがあります。ユーザー データを保持するためのもの テーブル名 - メンバー フィールド - ユーザー ID、ユーザー名、パスワード、電子メール。画像パスを保存するためのその他 テーブル名 - 画像 フィールド - ユーザー ID、画像パス

そのため、テーブル「画像」から画像パスを検索するページにユーザーの画像を表示できます

物事はうまくいっています。しかし、ユーザー数が増えると、これは遅くなります。例-50000人のユーザーがいる場合、すべての行をチェックして、1人のユーザーがアップロードした画像を見つける必要があります。50000 ユーザー ID * 20 イメージ/ユーザー = テーブル行の 1000000 スキャン これにより、システムが遅くなり、過負荷になります。これを避けるにはどうすればよいですか?

4

2 に答える 2

3

このようなスキーマを作成し、

CREATE TABLE dataTable
(
    `userid` INT NOT NULL, 
    `username` VARCHAR(50) NOT NULL, 
    `password` VARCHAR(50) NOT NULL, 
    `email` VARCHAR(50) NOT NULL
    CONSTRAINT tb_pk PRIMARY (`userID`),
    CONSTRAINT tb1_uq UNIQUE (`username`)
);

CREATE TABLE pathTable
(
    `userid` INT NOT NULL, 
    `imagepath` VARCHAR(50) NOT NULL, 
    CONSTRAINT tb_fk FOREIGN KEY  (`userID`) REFERENCES dataTable(`userid`)
);

特定のテーブル( dataTable )の主キーを参照する外部キーとしてそれuseridを指定すると、サーバーは自動的にインデックスを作成して検索を高速化します。pathTable

于 2012-10-07T06:49:55.900 に答える
1

2 番目のテーブルのユーザー ID フィールドにインデックスを作成します。構文: http://dev.mysql.com/doc/refman/5.0/en/create-index.html

mysql で INDEXES を使用する最大の利点は何ですか?

于 2012-10-07T06:48:29.520 に答える