ホームページ >バックエンド開発 >PHPチュートリアル >ビッグデータの同時実行性の問題の処理
データベース内
データベース
A
テーブルがあります
a
その中のデータは
名 姓
A a
このテーブルには何百万ものデータがあります。
そこで質問です
/*前の $name はすでに私によって定義されています*/
$result= "SELECT lastname FROM a WHERE firstname='".$name."'";
$sql_name= mysql_query($result);
$name=mysql_fetch_array($sql_title);
$subject =$name[0] ?>
同時に 500 個のデータベースを処理すると、サーバーがハングします。時間 。
何か良い解決策はありますか?
ディスカッションへの返信 (解決策)
コードの場合:
PHP レベルでは最適化の余地はありません
mysql レベルでは、firstname 列にインデックスを付けるだけです
PHP の観点だけから現状を変えることはできません
コードの場合:
PHP レベルでは最適化の余地はありません
mysql レベルでは、firstname 列にインデックスを付けるだけです
実際、まだ可能ですコードレベルからは、 Got a question
前者は、複数の行が取り出される可能性があることを意味します
後者は、行が何行あっても、最初に遭遇した行のみが取り出されることを意味します
いわゆる速度を追求する場合、本来の意図さえも歪められます。では、「最適化」とは何を意味するのでしょうか?
水平または垂直テーブルパーティショニング、またはマルチデータベースパーティショニングを通じて。
md5(名+姓)、異なるデータベーステーブルにハッシュされます。
上記で言ったことには何か間違っていると思いますが、where ステートメントに基づくと、サブデータベースとサブテーブルの依存関係は md5(firstname) であるはずです、申し訳ありません
と
$result= "SELECT lastname FROM a WHERE firstname='".$name."' limit 0,1";は意味が異なります。
前者は、複数の行が取り出される可能性があることを意味します
後者は、行が何行あっても、最初に遭遇した行のみが取り出されることを意味します
いわゆる速度を追求する場合、本来の意図さえも歪められます。では、「最適化」とは何を意味するのでしょうか?
データベースに重複しているものがいくつかあるため、申し訳ありません。それらの 1 つを取り出すだけです
上記の記述に何か問題がありますが、where ステートメントに基づくと、サブデータベースとサブテーブルの依存関係は md5 (firstname) であるはずだと思います。ごめんなさい
株式先物に似た高同時実行マッチングシステムがあります。誰でも作ることができますか?