日別アーカイブ: 2011年12月21日

wordpressでmeta descriptionをいじる

 色々なSEOパッケージにはMETA DESCRIPTIONをセットする機能があるんだけど、これの動作がGoogle先生に嫌われてしまった。
 具体的には、メインインデックスのDESCRIPTIONと別ページのDESCRIPTIONが同じになっていたんだけど、これが重複判定されて、インデックスの殆どが補足に回されてしまった。
なので、独自にDESCRIPTIONを作る。 header.phpの</head>の手前あたりに設置

<?php
if(isset($_SERVER[‘REDIRECT_URL’])){
if(is_array($posts)){
$local_array = array();
foreach($posts as $local_post){
$local_array[] = $local_post->post_title;
}
echo(“<meta name=’description’ value='”.implode(‘, ‘, $local_array).”‘ />”);
}
}else{
echo(“<meta name=’description’ value=’こちらはServersMan@VPSインデックスのDESCRIPTIONです。’ />”);
}
?>

このコードでは、/に接続されたときには、’こちらはServersMan@VPSインデックスのDESCRIPTIONです。’ を書き出して、それ以外のページの場合には、記事のタイトルをカンマ区切りで列挙するようにしてある。

(74)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

サブクエリを使う場合のパフォーマンス低下 – MySQL サブクエリ IN

 WHERE句でINを使ってサブクエリを構築する場合

SELECT * FROM main_table WHERE id IN (SELECT main_id FROM sub_table WHERE date=’2011-12-21′ GROUP BY main_id) AND type=1

 みたいに書くとパフォーマンスが低下する。
 メインテーブルの条件になるmain_idをグループにすると重複が無くなって良さそうな感じがするんだけど、このGROUP BYをするとインデックス動作が低速化するので、GROUP BY main_idを除去する方が良い。
 サブクエリの戻り値が複数あっても、結局、INを展開するとid=1 OR id=1 OR id=2みたいな事になるんで、JOINした場合と違って論理的に被らないので、こういったグループ化はしない方が良い。
 また、関数を使って値を処理した場合にもインデックスが動作せずにクエリが著しく低下するので、インデックスが動作する形でSELECTして、プログラム側で処理をした方が高速なこともあるのに注意したい。

(122)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ