私は2つのテーブルを持っています.1つは静的なデータベースで、もう1つは動的で最初のデータベースを検索します。今私は2つの別のクエリがあります。最初のページの読み込みでは、2番目のテーブルの値が検索語として最初のものに渡され、cURLを使用して検索結果を「取得」しています。これは非常に非効率的で、おそらくそれを行うには本当に間違った方法なので、私はこの問題を解決するのに助けが必要です。現在のページ(html、フロントエンド)は読み込みに40秒かかります。MySql:テーブル上で多数の検索クエリを実行する最良の方法
解決策:これを機能させても、それでも多くのコールが発信されます。テーブルをメモリにロードして、クエリを実行し、完了したらキャッシュをアンロードします。 regexpを使用してクエリを高速化するには?可能な参加ですか?
require 'mysqlconnect.php';
$id = NULL;
if(isset($_GET['n'])) { $id = mysql_real_escape_string($_GET['n']); }
if(isset($_POST['n'])) { $id = mysql_real_escape_string($_POST['n']); }
if(!empty($id)){
$getdata = "SELECT id, first_name, last_name, published_name,
department, telephone FROM $table WHERE id = '$id' LIMIT 1";
$result = mysql_query($getdata) or die(mysql_error());
$num_rows = mysql_num_rows($result);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo <<<PRINTALL
{$row[id]}~~::~~{$row[first_name]}~~::~~{$row[last_name]}~~::~~{$row[p_name]}~~::~~{$row[dept]}~~::~~{$row[ph]}
PRINTALL;
}
}
HTMLページのスクリプト:第二のテーブル、あなたが見ることができるように
require 'mysqlconnect.php';
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$getdata = "SELECT * FROM $table WHERE $table.mid != '1'ORDER BY $table.$sortbyme $o LIMIT $offset, $rowsPerPage";
$result = mysql_query($getdata) or die(mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$idurl = 'http://mydomain.com/dir/file.php?n='.$row['id'].'';
$p_arr = explode('~~::~~',get_data($idurl));
$p_str = implode(' ',$p_arr);
//Use p_srt and p_arr if exists, otherwise just output rest of the
//html code with second table values
}
も私だけ...
検索スクリプトを想像することができますので、しかし、私はnoobのですまたは有効なIDを持っていない可能性がありますので、結果はありませんが、2番目のテーブルは静かで大きなものですが、すべて私は15k +テーブルのセルを読み込んで出力しています。そして、おそらくコードから見ることができるように、私はページングを試みましたが、その解決策は私のニーズに合っていません。私は単一のHTMLページでクライアント側のすべてのデータを持っている必要があります。だからアドバイスをしてください。
ありがとうございます!
EDIT
まずテーブル:
id_row id first_name last_name dept telephone
1 aaa12345 joe smith ANS 800 555 5555
2 bbb67890 sarah brown ITL 800 848 8848
Second_table:
id_row type model har status id date
1 ATX Hybrion 88-85-5d-id-ss y aaa12345 2011/08/12
2 BTX Savin none n aaa12345 2010/04/05
3 Full Hp 44-55-sd-qw-54 y ashley a 2011/07/25
4 ATX Delin none _ smith bon 2011/04/05
だから2番目の表は、最初の読みとの情報があれば表示され、読み込みと表示されます一つですIDは正の一致です。 IDは最初のもので一意であり、2番目のIDはマルチフォーマットの入力を持つため、IDと重複する可能性があります。これが、私が必要とするものをよりよく理解できることを願っています。再度、感謝します!
1)。爆笑、私は知っている!私はノブです。これが私ができる最高の方法です。 2)。私は注文をしなければなりません、このページはAJAXを介して動的な "追加"行機能を使用しています。ページにはうまく動作する他の要素があります。そして、ここで提供されるこのコードに影響を与える形や形にはありません。 3)。はい、コードはありませんが、問題のあるものはすべてここにあります。 4)。私は一度だけ使用していて、1行の返品を扱ったことがないので、私は代替案を知らない。そして、はいリミット1は物事をスピードアップするためにそこにあります。 5)。 IDは、XYZ12345パターンの英数字です。私は2番目のテーブルにクエリを送信する前にこれをregexpする必要がありますか? – Tumharyyaaden
6)。そして、はい、私は2番目のテーブルの各行の最初のテーブルに1つのリクエストをしています。 7)。名前と電話を最初のテーブルから取得することは優先事項ではなく、最初のテーブルに存在するかどうかにかかわらず、2番目のテーブルの行を表示する必要があります。だからあなたの提案されたクエリが私の場合にはうまくいくとは思わない。 返信いただきありがとうございます。 – Tumharyyaaden
テーブルを追加しました。もう一度見てください。 – Tumharyyaaden