web-dev-qa-db-ja.com

MySQLでのクエリ時間の結果/ PHP

MySQLクエリの時間を取得する方法はありますか(特にPHPを使用)?クエリを完了するのにかかった実際の時間、つまり。

次のようなもの:茶色の結果1〜10。 (0.11秒)

私は例を探そうとしましたが、役に立ちませんでした。これが私のコードの例です:

                    // prepare sql statement
                $stmt = $dbh->prepare("SELECT ijl, description, source, user_id, timestamp FROM Submissions WHERE MATCH (ijl, description) AGAINST (?)");

                // bind parameters
                $stmt->bindParam(1, $search, PDO::PARAM_STR);

                // execute prepared statement
                $stmt->execute();

MyISAMテーブルエンジンを使用した現在の全文検索。どんな助けでも信じられないでしょう。ありがとうございました。

15
bob_cobb
$starttime = microtime(true);

//Do your query and stuff here

$endtime = microtime(true);
$duration = $endtime - $starttime; //calculates total time taken

これにより、実行時間がマイクロ秒単位で表示されます。

41
rayman86

これはあなたを助けるかもしれません

http://dev.mysql.com/doc/refman/5.0/en/show-profile.html

mysql> SET profiling = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE T1 (id INT);
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW PROFILES;
+----------+----------+--------------------------+
| Query_ID | Duration | Query                    |
+----------+----------+--------------------------+
|        0 | 0.000088 | SET PROFILING = 1        |
|        1 | 0.000136 | DROP TABLE IF EXISTS t1  |
|        2 | 0.011947 | CREATE TABLE t1 (id INT) |
+----------+----------+--------------------------+

あいさつ

5
Patricio Jofre

私が今あなたに言うことができる2つの可能性があります:

  • microtime()で-> execute()をラップして自分で測定し、「クエリ」コードスニペット全体をクラス/関数内でラップする可能性があります
  • そのクエリのEXPLAINクエリを実行し、返されたデータからいくつかの値を読み取れるかどうかを確認します

お役に立てば幸いです。

2

MYSQL 5を使用している場合は、SHOWPROFILEを確認することをお勧めします。

http://dev.mysql.com/doc/refman/5.0/en/show-profile.html

そして、PHPでタイミングを出力します...または、CPUなどによって各クエリの詳細または詳細に時間がかかったSQLステートメントを説明します

0
Jinxmcg