Mysql/sql速度改善
提供: 初心者エンジニアの簡易メモ
2015年5月20日 (水) 03:17時点における127.0.0.1 (トーク)による版 (ページの作成:「==count(id)などよりcount(*)としたほうが速い。== select count(id) from table1 where user_id = 1 and del_flag = 1; -- 遅い select count(id) from table1 whe...」)
目次
count(id)などよりcount(*)としたほうが速い。
select count(id) from table1 where user_id = 1 and del_flag = 1; -- 遅い select count(id) from table1 where user_id = 1 and del_flag = 1; -- 速い
上の例で条件にidが入っていれば速度は同じになる
slow.logを設定してチューニング
mysql/slow.log設定 [ショートカット]
日付検索はbetweenが速い(12万件入れて検証
SELECT count(*) FROM test WHERE date >= '2010-07-04 00:00:00' AND date <= '2010-07-04 23:59:59'; 0.05s SELECT count(*) FROM test WHERE DATE_FORMAT(date, '%Y-%m-%d') = '2010-07-04'; 0.11s SELECT count(*) FROM test WHERE date like '2010-07-04%'; 0.06s
日付期間取得時
SELECT * FROM contents WHERE created BETWEEN '2013-01-17' AND '2013-01-17' + INTERVAL 10 DAY
日時はdatetimeでなくintに
created updated
はdatetimeやtimestamp型でなくintにした方が3倍程度速い。
参考 http://fukaoi.org/2009/06/10/mysql_datetime
queryログを出力追加
my.cnf
[mysqld] log=D:\xampp\mysql\log\query.log
sql速度改善リンク集
- SQLを速くするぞ
http://www.geocities.co.jp/mickindex/database/db_optimize.html
- MySQLを高速化する10の方法 Add Star