mysqlの便利だけど忘れるコマンド
チェック
check table country,format,stock;
チェック2
check table goods extended;
リペア
repair table country,format,stock;
最適化
optimize table country,format,stock;
インデックスのみ最適化
analyze table country,format,stock;
置換
update goods set review=REPLACE(review,'<','<');
update goods set format=REPLACE(format,'"','"');
update goods set title=REPLACE(title,'&','&');
ファイル書き出し(エクスポート)
select * into outfile '/home/user/country.sql' from country;
インデックス確認
show index from goods;
インデックス作成
create index open_date_index on goods (open_date);
create index open_close_index on goods (open_date,close_date);
インデックス削除
drop index open_date_index on goods;
スレーブ確認
show slave status \G;
インデックス動作確認
explain SELECT me.goods_id, me.title FROM goods me ORDER BY format \G;
テキストデータインポート(IGNORE で重複ユニークキースキップ)
LOAD DATA INFILE "/tmp/hoge.tab" IGNORE INTO TABLE hoge;
テーブル内容高速削除
TRUNCATE TABLE goods;
遅いログの記録設定
vim /etc/my.cnf
set-variable=log-slow-queries=/var/log/slowsql.log
set-variable=long_query_time=1 ←1秒以上かかったコマンドの記録
set-variable=log-queries-not-using-indexes ←インデックスを使用しないコマンドの記録
スレーブ開始
ex)http://www.irori.org/doc/mysql-rep.html
mysql> CHANGE MASTER TO
-> MASTER_HOST = 'mymaster',
-> MASTER_USER = 'repl',
-> MASTER_PASSWORD = 'qa55wd',
-> MASTER_LOG_FILE = 'mymaster-bin.001',
-> MASTER_LOG_POS = 359;
mysql> START SLAVE;
スレイブストップ
STOP SLAVE;
カラムを最後に追加する
ALTER TABLE テーブル名 ADD 追加するカラム名 型;
JOIN 使いつつ ORDER BY で別テーブルの複数キーを指定すると非常に遅い。
非正規化するのが吉。
文字列連結
SELECT CONCAT(name_en, ' ', name_jp) FROM goods WHERE id='X55';
ex)http://dev.mysql.com/doc/refman/5.1/ja/string-functions.html
サブクエリでアップデート+文字列連結
UPDATE goods_data SET search_name = (SELECT CONCAT(name_en, ' ', name_jp) FROM goods WHERE id=goods_data.goods);
使えるテーブルタイプ一覧表示
SHOW TABLE TYPES;
テーブルステータス表示
SHOW TABLE STATUS;