テーブルとのクロス結合を試みています。インラインクエリとストアドプロシージャの同じクエリの異なる実行
select u1.userid,u2.userid from users as u1 join users as u2
このクエリをラインクエリと同じように書くと、0.183 sec
で実行されます。
しかし、同じクエリを後続の処理に使用するルーチンに入れていると、あまりにも多くの時間がかかります(approx 500-600 seconds)
。
CREATE DEFINER=root`@`localhost PROCEDURE Test_Cross_Join()
BEGIN
select u1.userid,u2.userid from users as u1 join users as u2;
END
実際には、実際には1回だけ実行され、それから私はおおよその時間を得ることができました。しかし、ほとんどの時間私はその手続きを呼び出そうとしましたが、私の"MySQL Workbench"
は応答せず、強制的にシャットダウンしませんでした。ユーザーテーブルには16000 rows
が含まれています。インラインクエリの実行時間と実行時間を検索したところ、満足のいく回答が得られなかったのは、ほとんどの回答が時間差がないと言っているからです。私は、同じクエリの実行に、コードを一度変更することなく時間差がある理由を知りたいと思います。私はubuntu 16.04でmysqlバージョン5.7.16を使用しています。