2011-01-17 10 views
0

私はデータベースに何人ものユーザーを持っています(これは100、2000、または3でも構いません)。 "show tables"を使用してテーブル名を私はwhileループを実行しているし、すべてのテーブル名(ユーザーの名前)を取っていくつかのコードに挿入すると、私はすべてのテーブル名のコードを実行している。 3人のユーザーで、このスクリプトは約20秒かかります。 Twitter APIを使用し、いくつかのmysqlの挿入を行います。これはそれを行う最も効率的な方法ですか?このPHPスクリプトを実行する最も効率的な方法

+0

だから、各ユーザーは独自のテーブルを取得できますか? – ndtreviv

+0

はい、これは正しくありませんか?私は1つのテーブル内のユーザーを混乱させたくない – benhowdle89

+0

なぜあなたはすべてのユーザーのための別のテーブルを持っていますか?これはTwitterのためですか?担当者は、このようなシステムを自分で設計するつもりはないと示唆しています。 – Tesserex

答えて

5

確かにありません!

なぜ各ユーザーをテーブルに格納するのか分かりません。 usersテーブルを作成し、そこから選択する必要があります。

0.0001秒で実行されます。

更新:

テーブルには行と列があります。複数のユーザーを行に格納し、各ユーザーの情報を列に格納できます。

いくつかのデータベースデザインチュートリアルや書籍を試してみてください。彼らはあなたに大いに役立ちます。

+0

私はtweet_idとツイートと呼ばれる列を各ユーザが持っているので、私はそれをこのようにしている。どのように私はこれを行うだろうが、ユーザーと呼ばれる1つのテーブルと? – benhowdle89

+0

これをアップして、一般的なデータベース設計を見てみましょう。他のいくつかの開発者を驚かせるかもしれませんが、私は実際にこの設計アイデアを思いついている他の人たちについて聞いてきました。正直なところ、このアイデアがテーブル間の周囲の結合の理解の欠如以外に由来するのかどうかはわかりませんが、悲しいかな、これは絶対に最善の答えです。私は、すべての単一ユーザのためのテーブルを作成する世界の生産システムはないと考えることができます。それは狂気です。 – cgp

0

同じユーザーテーブル内に各ユーザーの複数のエントリを格納することを心配している場合は、tweet_idを参照してツイート用のテーブルを作成することができます。

私は確かに1人のユーザーテーブルに行きます。

+0

okこれはいいですね。私はそれぞれのテーブルよりはるかに良いと思います – benhowdle89

0

データベースは多くの行を処理するために最適化されています。使用される技法の中には、索引、ディスク上のデータの物理的レイアウトなどがあります。多くのテーブルの操作は常に遅くなります。これは、RDBMSが構築されたものではありません。

1つの例外があります。シャーディング(データのパーティション化)によってデータベースを最適化することもありますが、この方法は欠点と同じくらい多くの利点があります。欠点の1つは、説明したようなクエリに多くの時間がかかることです。

論理的な観点から、すべてのユーザーを1つのテーブルに入れる必要があります。これは、1つのエンティティを表すためです。

関連する問題