親愛なるphpとmysqlの熟練者 私は、ポストのartices 200,000records(index colume:sid)の2つのテーブルと、トピックのための小さなテーブル(index colume topicid)を持っています。 20のレコードを持っている.. 同じ小さなテーブルを持つ大きなテーブルを内部に結びつける方法
が海流イム使用してをTOPICIDあります(それは丸い0.4秒かかった)
+テーブルから最後の50レコードを取得行います
SELECT SID、援助、タイトル、時間、トピック、情報提供者、ihome、alangua
しばらく(:各ポストで話題の加工への名前を見つけるために、各レコード内のループをしながら、GE、SIDのDESCのLIMITその後、0,50
+ BYカウンター、種類、画像、ORDER veryzoo_stories FROM chainidを行います...){TOPICID = '$トピック'」 veryzoo_topics FROM SELECTます。topicName .... }
+今 私はインナーがスピードアッププロセスに参加使用する予定が、私のテストとして、それは多くを取りました1.5秒から3.5秒まで長くなります
SELECT a.sid、a.aid、a.title、a.time、a.topic、a.informant、a.ihome、a.alanguage、a.counter、a.type、a.imagesインナーは全て2台から20万件のレコードを参加ください参加するように、a.chainid、t.topicname INNER JOINをveryzoo_stories FROM veryzoo_topicsトンON a.topic = t.topicidのSID DESCをLIMIT 0,50
BY ORDERは、それは見て長い時間がかかった拳、その後50で結果を制限..
正しい方法これを行うに私を指すように助けてください.. 例えば、表1から最後の50件のレコードを取る...その後、表2に参加さ...電気ショック療法
NOP 2つの表は、同じPキーを持っていけない...大田部のp個のキーがあります。sidと小さなテーブルは、私はしばらく使用したpキー –
としてTOPICIDました。結合は、特定の条件が満たされない限り、クエリを高速化する方法にはなりません。 – ascanio
私は同意しません。 50個のクエリを作成すると、多くのオーバーヘッドが発生します。結合(またはWHEREとの野蛮な結合)では、クエリは1つだけになります。 JOInのステートメントはリレーションシップで動作するように作られています。データベースがうまく設計されていて(インデックスとリレーションシップで)、リレーションをサポートする最新のエンジンを使用すると、パフォーマンスが向上するはずです。 –