1) mysql エンジンでは、MyISAM の方が優れていますか、それとも InnoDB ですか?
2)マルチカテゴリの投稿を追加できるように cms をプログラミングしたいのです が、いくつかのクエリでパフォーマンスを向上させるためにデータベースをどのように設計する必要がありますか?
PHPで、たとえば= 1のカテゴリの投稿を一覧表示するにはどうすればよいですか?
ありがとうございました
1) mysql エンジンでは、MyISAM の方が優れていますか、それとも InnoDB ですか?
2)マルチカテゴリの投稿を追加できるように cms をプログラミングしたいのです が、いくつかのクエリでパフォーマンスを向上させるためにデータベースをどのように設計する必要がありますか?
PHPで、たとえば= 1のカテゴリの投稿を一覧表示するにはどうすればよいですか?
ありがとうございました
1) DB レベルで外部キー関係が必要な場合は InnoDB を使用し、それ以外の場合は MyISAM を使用します
2)そのようなスキーマを使用して、すべてのカテゴリを1つのテーブルに保存できます
create table categories (
Category_ID int NOT NULL,
ParentCategory_ID int NOT NULL default 0,
CategoryName varchar(150)
);
Category_ID 主キーを使用
3)
$sql = select * from posts where category_id = 1;
mysql_query($sql);
edit : post テーブルのスキーマ (例)
create table posts (
Post_ID int NOT NULL,
Category_IDs varchar(50) NOT NULL,
POSTDescription varchar(1000),
POSTTime int NOT NULL
)
Post_ID
posts
テーブルの主キーです。
varchar
Category_IDs は、投稿がカテゴリ 1、2、および 3 に属している場合のように、カテゴリの値を格納するようになったことに注意して1,2,3
ください。また、カテゴリ 1 に属するすべての投稿を削除するには、次のクエリを実行します。
$sql = DELETE
FROM `posts`
WHERE FIND_IN_SET( '1', `Category_IDs` ) >0;
要件に依存するため、決定的な答えはありませんが、多くの人がすでに次のようなことを言及しています。
ただし、innodb のクラスター化された主キー インデックスについて言及する人は多くありません。このため、適切に設計された innodb テーブルが同等の myisam テーブルよりも簡単に優れたパフォーマンスを発揮します。
クラスター化インデックスを説明する 2 つのリンクを次に示します。
http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html
http://www.xaprb.com/blog/2006/07/04/how-to-exploit-mysql-index-optimizations/
また、次の例と記事をご覧ください (2 番目の例は特に関連性がある場合があります)。
5 億行のフォーラム/スレッドの例
1億2500万行の商品・カテゴリーの例
1 億行の実験
Innodb 対 myisam 対 falcon ベンチマーク
http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/
お役に立てれば :)