1

次のMySQL クエリを実行しています。

* family_type='f597'; の組み合わせから選択します。

約90,000行あるテーブルで。phpMyAdmin 経由でクエリを実行すると、実行に 0.3 秒かかりますが、同じホスト上の私の PHP ページでは、一貫して約 8 秒かかります。

私のページでかかる時間をテストするために、次のように実行します。

$秒 = マイクロタイム (真);
$q = "select * from family_type='f597';";
$r = mysql_query($q);
$secs = round(microtime(true)-$secs, 3);
exit("$secs 秒");

テーブル構造は次のとおりです。

CREATE TABLE `組み合わせ` (
  `part_no` char(7) collat​​e latin1_general_ci NOT NULL,
  `key_type` smallint(4) unsigned NOT NULL,
  `family_type` char(5) collat​​e latin1_general_ci NOT NULL,
  `year_start` varchar(6) collat​​e latin1_general_ci NOT NULL,
  `year_end` varchar(6) collat​​e latin1_general_ci NOT NULL,
  `visual` varchar(31) collat​​e latin1_general_ci NOT NULL ,
  `info_veh_0` varchar(255) collat​​e latin1_general_ci NOT NULL,
  `info_veh_1` varchar(255) collat​​e latin1_general_ci NOT NULL,
  `info_veh_2` varchar(255) collat​​e latin1_general_ci NOT NULL,
  `key` mediumint(8) unsigned NOT NULL auto_increment,
  主キー (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2349584 ;

私のプログラムがphpMyAdminよりも同じクエリを実行するのが遅い理由を誰か説明できますか?

[更新 1]他のプログラミングの外部でクエリをテストしました。mysql 接続情報と問題のクエリのみを含む単純な test.php ページを作成しました。したがって、先験的に、遅延を引き起こしているのはサイト プログラミングの他の側面ではありません。

[更新 2]ページの読み込みにかかる実際の時間は、phpMyAdmin とテスト ページで同じです。違いは、phpMyAdmin がクエリ時間を計算する方法が原因である可能性があります。

いずれにせよ、クエリの処理に 0.3 秒しかかからない場合、残りの遅延はどこから来るのでしょうか?

4

3 に答える 3

8

これは、phpMyAdmin が結果をページ分割しているという事実のために、画面の後ろに limit 句を追加するためである可能性があります。

于 2009-11-18T10:47:18.840 に答える
0

SQL クエリを実行すると、条件に一致するすべてのレコードが取得されます。しかし、ページにすべてを表示しない場合は、Web ページに表示したい数の記録を取得してください。私はそれらをページングすることを意味します。

于 2009-11-18T11:27:52.720 に答える
0

Linux ボックス上にある場合、確認したい場合は、ツール「mysql」を使用してサーバーにクエリを実行できます。

于 2009-11-18T11:34:43.973 に答える