MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLクエリの実行を停止するにはどうすればよいですか?


実行中のMySQLクエリを停止するために、プロセスIDを指定してKILLコマンドを使用できます。構文は次のとおりです-

kill processId;

または、以下の構文を使用して、実行中のMySQLクエリを停止できます-

call mysql.rds_kill(queryId);

まず、showコマンドを使用してprocessIdを取得しましょう。クエリは次のとおりです-

mysql> show processlist;

これがプロセスのリストを含む出力です-

+----+-----------------+-----------------+----------+---------+--------+------------------------+------------------+
| Id |  User           | Host            | db       | Command | Time   | State                  | Info             |
+----+-----------------+-----------------+----------+---------+--------+------------------------+------------------+
| 4  | event_scheduler | localhost       | NULL     | Daemon  | 221718 | Waiting on empty queue | NULL             |
| 47 | root            | localhost:60722 | business | Query   | 0      | starting               | show processlist |
+----+-----------------+-----------------+----------+---------+--------+------------------------+------------------+
2 rows in set (0.03 sec)

ここでは、2つのプロセスがMySQLで実行されており、そのうちの1つを停止する場合は、「KILL」を使用して特定のIDで上記の構文を使用できます

クエリは次のとおりです-

mysql> kill 47;
ERROR 1317 (70100): Query execution was interrupted

または、mysql.rds_kill(id)を使用してこれを行うことができます。クエリは次のとおりです-

mysql> CALL mysql.rds_kill(47);
ERROR 2013 (HY000): Lost connection to MySQL server during query

  1. クエリがMySQLでnull値を返す場合、どうすれば0を設定できますか?

    このために、IFNULL()を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> Value int    -> ); Query OK, 0 rows affected (0.71 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into

  2. MySQLクエリでORステートメントが多すぎるのを避けるにはどうすればよいですか?

    MySQL IN()を使用して、ORステートメントが多すぎないようにします。まずテーブルを作成しましょう- mysql> create table DemoTable (    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    Name varchar(40) ); Query OK, 0 rows affected (0.89 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable(Name) values('