0

1) mysql エンジンでは、MyISAM の方が優れていますか、それとも InnoDB ですか?

2)マルチカテゴリの投稿を追加できるように cms をプログラミングしたいのです が、いくつかのクエリでパフォーマンスを向上させるためにデータベースをどのように設計する必要がありますか?

PHPで、たとえば= 1のカテゴリの投稿を一覧表示するにはどうすればよいですか?

ありがとうございました

4

2 に答える 2

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_IDpostsテーブルの主キーです。

varcharCategory_IDs は、投稿がカテゴリ 1、2、および 3 に属している場合のように、カテゴリの値を格納するようになったことに注意して1,2,3ください。また、カテゴリ 1 に属するすべての投稿を削除するには、次のクエリを実行します。

$sql = DELETE
FROM `posts`
WHERE FIND_IN_SET( '1', `Category_IDs` ) >0;
于 2011-04-15T11:27:09.333 に答える
1

要件に依存するため、決定的な答えはありませんが、多くの人がすでに次のようなことを言及しています。

  • innodb には行レベルのロックと myisam テーブルのロックがあるため、innodb はより多くの同時要求を処理できます。
  • innodb はトランザクショナルなので、通常、挿入は myisam より遅くなります
  • innodb は適切な RDBMS エンジンであるため、参照整合性をサポートします (トランザクション ACID bla bla bla)
  • innodb は myisam よりも信頼性が高い
  • myisam は innodb よりも読み込みが速い (神話)
  • myisam テーブルのフットプリントは innodb のものよりも小さい (神話)

ただし、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 番目の例は特に関連性がある場合があります)。

お役に立てれば :)

于 2011-04-15T11:43:23.917 に答える