前の記事 ≪:WindowsアプリのツリービューっぽいUIをWEB上で簡単実装できるjQueryプラ...
次の記事 ≫:シンプルさがいい感じの154種類のアイコンセット

PHP開発者のMySQLの間違いトップ10

2010年11月25日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法

Top 10 MySQL Mistakes Made by PHP Developers

PHP開発者のMySQLの間違いトップ10。
手慣れている人にとっては知ってることも多いかもしれませんが、初心者が役立ったり、知らない部分のカバーとしてメモとして書いてみます

  1. MyISAMを使っている
    デフォルトはストレージエンジンにMyISAMだけどInnoDBを使おう
    リカバリ可能でオンラインバックアップ機能、外部キー利用可能なInnoDBおすすめ
    詳細:Open database life: MyISAMとInnoDBのどちらを使うべきか
  2. PHPのMySQL関数を使っている
    mysql_* 関数を使わず、PDO等でストレージ変更に対応しよう
    べた書きでmysql_*関数を使っていると、別DBに移行する際に多くの作業が必要になる
  3. ユーザインプットをクエリに含めて実行している
    クエリをそのまま実行しない
    $user = $_POST['user'];
    $sql = "select userid from usertable where username = '$user';
    当たり前ですが$userはエスケープしないとSQLインジェクション等の脆弱性混入になります
  4. UTF8を使っていない
    国際化のためにUTF8を使おう。無駄なエンコーディング変換はパフォーマンスも低下
  5. MySQLでできることをPHPでやっちゃってる
    平均値を出すのにmysqlネイティブなAVG等を使おう。phpでループさせるのは無駄
  6. クエリを最適化しない
    MySQLのexplainやQuery Profilerを使ってクエリを最適化しよう
    Query Profiler で何に時間がかかっているか視覚化できます
    Jet Profiler - 視覚的にプロファイリングが可能

    MyProfi - よく使われるクエリ等の統計をとれるコマンドラインツール。類似クエリはグループ化され、よく使われているクエリを集中的に最適化する場合なんかに使えそう
  7. データ型をちゃんと使っていない
    日付を扱う場合はDATEかDATETIMEを使おう
    int や varchar で管理している場合もあるけどやめよう
  8. select * を使っている
    select * はやめよう。
    全部とってくるのはパフォーマンスに影響があるので必要な分だけ取ってくる
  9. 過度なインデックス付与やインデックス付与してない場合
    インデックスの設計はちゃんとやろう
    オーバーインデックスやインデックス不使用をやめる。select は速くなってもinsert, updateが遅くなるので注意
  10. バックアップを忘れてる
    バックアップはちゃんととろう
    プログラミングを初めて間もない場合はとってない場合もありそう

なかなか奥が深いMySQLですが、WEB開発を行う上ではもはや必須といえるので、私含めちゃんとマスターしておきたいところ。

関連エントリ

関連の記事検索:MySQL, PHP, プログラミング
スポンサード リンク

By.KJ : 2010年11月25日 10:08 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)