Ora Ora Ora Ora Oraの軆??きは、MySQLで。
■インデック繧?
カーディナリティ度が菴?いとは、カラムの値の種類がレコード数に觸??べて藹??ないことをあら繧?す。性別や血液型な縺?
カーディナリティ度が高いとは、カラムの値の種類がレコード数に觸??べて藹??いことをあら繧?す。身長や体重な縺?
インデックスの臀??け方 カーディナリテ繧?(一諢?な値の個謨?)が高いものに臀??ける
create index index_name on table(column);
show index from テーブル名;
インデックスを使用して觸??索しているかの確認
explain select * from table where インデックスを持つカラム名="蛟?";
■トランザクショ繝?
InnoDBのときトランザクション可能、Commitしない場合Rollbackされる
$query = 'START TRANSACTION';
$result = mysql_query ($query);
$query = 'INSERT INTO test_rollback (stock_no) VALUE ('あ')';
$result = mysql_query ($query);
$query = 'COMMIT';
//$result = mysql_query ($query);
■ユニオ繝?
--Viewを作るか、Mergeテーブルを作るか
create view viewX(varx,vary,varz)
as
SELECT * FROM table1
union
select * FROM table2
CREATE TABLE total (
a INT NOT NULL AUTO_INCREMENT,
message CHAR(20), KEY(a)
)TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
■月間、日臀??につい縺?
月間縺?SQL betweenの方が処理は早い
reg_date >= '2010-02-01' AND reg_date < '2010-3-01'
reg_date between 2010-02-01 and 2010-02-28 23:59:59
→これだ縺?59から00縺?1秒が抜ける?
reg_dateがdate型であれ縺?
between reg_data '2010-02-01' and '2010-02-28'で十分
datetime型なら
between reg_data '2010-02-01 00:00:00' and '2010-02-28 23:59:59'で十分
MySQLの最適化
http://slashdot.jp/journal.pl?op=display&uid=4&id=26710
http://txqz.net/blog/2006/12/13/0943
MySQLマイスターに学べ・?? 即効クエリチューニン繧? 記事一隕?
SQL実行計画の疑問解決には「とりあえずEXPLAIN」しよう