データベースには任意の数のユーザーがいます(これは100、2000、または3の場合があります)。mysqlの「showtables」を使用してテーブル名を配列に格納し、whileループを実行してすべてのテーブル名(ユーザー名)を取得してコードに挿入すると、すべてのテーブル名に対して上記のコードを実行します。ユーザーが3人の場合、このスクリプトには約20秒かかります。Twitter APIを使用し、いくつかのmysql挿入を行います。これはそれを行うための最も効率的な方法ですか?
3 に答える
確かに違います!
各ユーザーをテーブルに保存する理由がわかりません。users
テーブルを作成し、そこから選択する必要があります。
0.0001秒で実行されます。
アップデート:
テーブルには行と列があります。複数のユーザーを行に格納し、各ユーザーに関する情報を列に格納できます。
いくつかのデータベース設計のチュートリアル/本を試してみてください。それらはあなたに大いに役立ちます。
同じusersテーブル内にユーザーごとに複数のエントリを格納することを心配している場合は、tweet_idがユーザーを参照するツイート用に個別のテーブルを作成できます。
私は確かに1人のユーザーテーブルに行きます。
データベースは、多くの行を処理するために最適化されています。使用される手法には、インデックス、ディスク上のデータの物理的なレイアウトなどがあります。多くのテーブルでの操作は常に遅くなります。これは、RDBMSが実行するように構築されたものではありません。
例外が1つあります。シャーディング(データのパーティション化)によってデータベースを最適化する場合がありますが、このアプローチには欠点と同じくらい多くの利点があります。欠点の1つは、説明したようなクエリに時間がかかることです。
すべてのユーザーを1つのテーブルに配置する必要があります。これは、論理的な観点から、ユーザーは1つのエンティティを表すためです。