MySQLのたまーに使うクエリの防備録


MySQLを使ってる人はクエリとか撃っちゃいますよね!
INSERTとかSELECTとかよく使うのは覚えちゃってますけど、
たまに撃ちたくなるマニアックなクエリとかあるんです。
そのたびに調べるのが手間のため防備録として都度書き溜めればいいんじゃね?と思いました。

レコードが存在してるか確認後、なければINSERTしたい!

REPLACE INTO Table (id) VALUES (1)

idがプライマリーキーかユニークインデックスされてた場合に、レコードが存在すれば削除後に追加。

レコードの特定の文字列を一括で置き換えしたい!

UPDATE `table` SET feild = REPLACE(feild, '置き換え前', '置き換え後')

feildの中に「置き換え前」という文字列があれば「置き換え後」に更新される

実行中のMySQLクエリを調べる

SELECT * FROM information_schema.PROCESSLIST where info is not null order by time desc

show processlistでも見れるけど、クエリを実行してないプロセスも表示されるため、上記クエリを実行した方がwhereやorderを使うことができる。これは実行しているもので、時間が長いクエリでソートしている。

クエリキャッシュのヒット率を調べる

SELECT 
  (SELECT VARIABLE_VALUE 
  FROM 
     INFORMATION_SCHEMA.GLOBAL_STATUS 
WHERE 
  VARIABLE_NAME = 'QCACHE_HITS')/(SELECT SUM(VARIABLE_VALUE) 
FROM 
  INFORMATION_SCHEMA.GLOBAL_STATUS 
WHERE 
  VARIABLE_NAME IN ('QCACHE_HITS','QCACHE_INSERTS','QCACHE_NOT_CACHED'))*100 AS CACHE_HIT_RATE;

クエリキャッシュのHIT率を調べるクエリ。ややこしいけど実行するだけでわかるので便利。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です