PHPはアバウト処理をしてくれますので、クォートをつけなくても動くのですが、有るのと無いのとでは天地ほどの差が出ます!! なので四の五の言わず、”絶対に”つけよう。 ※付ける付けないで、5倍も10倍もパフォーマンスが違う。 Mysqlへの接続などのクォートはバッククォートです。 ちなみにキーボードのShiftを押しながら@を押したら入力できます。 select * from dbename where id = test order by date DESC(ないバージョン) select * from `dbename` where `id` = ‘test’ order by `date` DESC(あるバージョン) このバッククォートが大事なのです。 総称すると以下のようになります。 $sql = “select * from `dbename` where `id` = ‘test’ order by `date` DESC”;
Mysqlへのselectなどのsqlリクエストでよく使う、*(アスタリスク)。 全フィールドをよびだせるからついつい使いがちですが、これが重い原因のひとつです。 Mysql側では、全文検索を行うため、MySQL上に無駄な処理がかかり重たくなります。 Mysql側に無駄な処理がかからないようにするのが必要です。 必要なカラムのみ取得するようにするには、下記のようにすると良い! select `dbename`.`id` from `dbename` where `id` = ‘test’ order by `date` DESC 上記の2つで【クォート】と、select分での*をやめることである程度負荷は軽減できるはずです。
前方一致であればあるほど、パフォーマンスが良くなります。 SQL文で、ワイルドカードを使えば自由に前方一致・後方一致・全文検索が行えます。 たとえば、
select * from `data` where `Name` like ‘山田太郎’
こう書きますと、完全一致タイプの検索になります。
select * from `data` where `Name` like ‘山田%’
こう書きますと、前方一致で、山田の後はどんな文字列が入っていてもOKという検索になります。
select * from `data` where `Name` like ‘%太郎’
これは後方一致、苗字はなんでもよく、【太郎】という名前の方を探します。
select * from `data` where `Name` like ‘%田%’ この際の前方一致【文字列%】であれば、それなりのパフォーマンスで検出できますが、後方一致や全文検索での部分一致タイプでは、著しくパフォーマンスは落ちます。