2011-02-04 5 views
0

私は(ゲーム内の攻撃のログを取得する)ゲームのためのMySQLデータベースにサイト(私によって制御されない)のページを解析するスクリプトを持っている時点ではlilの背景情報処理が速いのはどちらですか?

。私は最近、これをより速くアップグレードしたいと決めたので、データを配列に格納するようにパーサーを完全に再コーディングしました。今度は私の質問に基づいて:

私の最初のバージョンは現在、ユーザーが失った/残した数と他のいくつかのビットとピースによって単位時間ごとに1つあります。実際にユニットを失ったり、そのタイプのユニットを失ったりすることはありません。今私がJSONに配列をエンコードして文字通りそれをデータベースに貼り付けたら、挿入時に現在のものより速くなるでしょうか?

1)

2)最初の方法でデータを取得して100個の結果を表示する必要があるとしましょう(最初の方法で要約のみが選択され、3列のみが選択されます)。 1つのselectとwhileループでデータを表示すると、dbからデータを選択してデコードして処理するよりも遅くなるか速いでしょうか?

(あなたがより良い方法を知っている場合にも、:)を言うことを躊躇しない - または私は2つのミックスを行う必要がある場合)

+0

この非常に興味深い読者に指摘したいと思います。http://bret.appspot.com/entry/how-friendfeed-uses-mysql – Alfred

答えて

1

問題は、どの挿入とそれほどではありませんレコードごとに1回だけ行うのではなく、読書の中で行います。大きなテキストフィールドにJSONの塊を置くだけで、すべてのMySQLのデータ処理能力が失われます。

MySQLのクエリを使用してデータベースから必要なレコードを選択することは、データベースからすべてのレコードを取得してメモリ内をループするよりもはるかに優れています。

+0

真実ですが、たとえば、私はすべてを選択するリーダーボードページを持っています行/列のデータベースでは、このdbは約30k行の大きさです。私はそれからすべてを選択してそれを使用しなければなりません。それは、テキストの一部にjson varを持つよりも遅くないのですか?私はアイデアがアイデアをアイデアのアイデアをアイデアのアイデアを使用してアイデアを自分の列(ユーザーの名前など)に入れていると思っていたので、jsonは膨大なデータになります。 –

+0

(忘れてしまいました^ _ ^)また、私の主要な言葉であるにもかかわらず、スペルミスの編集、ひどい英語に感謝します。 –

+0

MySQLのすべての利点は、集計を使用してスコアを計算し、結果を順序付けし、リーダーボードのトップnリーダーだけを返すことができることです。処理のためにページにあまりにも多くのデータを送る必要はありません。 – Fenton

関連する問題