PHP開発者のMySQLの間違いトップ10
2010年11月25日-
スポンサード リンク
Top 10 MySQL Mistakes Made by PHP Developers
PHP開発者のMySQLの間違いトップ10。
手慣れている人にとっては知ってることも多いかもしれませんが、初心者が役立ったり、知らない部分のカバーとしてメモとして書いてみます
- MyISAMを使っている
デフォルトはストレージエンジンにMyISAMだけどInnoDBを使おう
リカバリ可能でオンラインバックアップ機能、外部キー利用可能なInnoDBおすすめ
詳細:Open database life: MyISAMとInnoDBのどちらを使うべきか - PHPのMySQL関数を使っている
mysql_* 関数を使わず、PDO等でストレージ変更に対応しよう
べた書きでmysql_*関数を使っていると、別DBに移行する際に多くの作業が必要になる - ユーザインプットをクエリに含めて実行している
クエリをそのまま実行しない
$user = $_POST['user'];
$sql = "select userid from usertable where username = '$user';
当たり前ですが$userはエスケープしないとSQLインジェクション等の脆弱性混入になります - UTF8を使っていない
国際化のためにUTF8を使おう。無駄なエンコーディング変換はパフォーマンスも低下 - MySQLでできることをPHPでやっちゃってる
平均値を出すのにmysqlネイティブなAVG等を使おう。phpでループさせるのは無駄 - クエリを最適化しない
MySQLのexplainやQuery Profilerを使ってクエリを最適化しよう
Query Profiler で何に時間がかかっているか視覚化できます
Jet Profiler - 視覚的にプロファイリングが可能
MyProfi - よく使われるクエリ等の統計をとれるコマンドラインツール。類似クエリはグループ化され、よく使われているクエリを集中的に最適化する場合なんかに使えそう - データ型をちゃんと使っていない
日付を扱う場合はDATEかDATETIMEを使おう
int や varchar で管理している場合もあるけどやめよう - select * を使っている
select * はやめよう。
全部とってくるのはパフォーマンスに影響があるので必要な分だけ取ってくる - 過度なインデックス付与やインデックス付与してない場合
インデックスの設計はちゃんとやろう
オーバーインデックスやインデックス不使用をやめる。select は速くなってもinsert, updateが遅くなるので注意 - バックアップを忘れてる
バックアップはちゃんととろう
プログラミングを初めて間もない場合はとってない場合もありそう
なかなか奥が深いMySQLですが、WEB開発を行う上ではもはや必須といえるので、私含めちゃんとマスターしておきたいところ。
関連エントリ
スポンサード リンク
Advertisements
SITE PROFILE
最新のブログ記事(新着順)
- AIを使ってサイトマップが作れる「Octopus.do」
- ライブラリ依存のないモーダルオープンライブラリ「Blendy」
- 個性的な明朝フリーフォント「築豊初号明朝OFL」
- CSSで太陽が差し込むようなアニメーション実装
- 可愛くアニメーションする「beautifully crafted animated icons」
- アイソメトリックなアイコンがアイコンがPNG,SVGでゲットできる「Isoicons」
- ユニークなカタカナフォントtorisippo
- 美しいメッシュグラデーションをCSSで簡単に取得できる「MSHR」
- TailwindCSSなサイトで使える100以上のアニメーションエフェクト「animata」
- SVG形式のテック系企業のロゴを簡単にゲットできる「Svgl」
- 過去のエントリ