1) 在 mysql 引擎中,MyISAM 更好还是 InnoDB 更好?
2)我想编写一个可以添加多类别帖子的cms 我必须如何设计我的数据库以通过一些查询获得更好的性能?
在 php 中,如何列出例如 = 1 的帖子?
谢谢你
1) 在 mysql 引擎中,MyISAM 更好还是 InnoDB 更好?
2)我想编写一个可以添加多类别帖子的cms 我必须如何设计我的数据库以通过一些查询获得更好的性能?
在 php 中,如何列出例如 = 1 的帖子?
谢谢你
1)如果您需要数据库级别的外键关系,请使用 InnoDB 否则使用 MyISAM
2)您可以将所有类别存储在一个具有类似架构的表中
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);
编辑:发布表的架构(示例)
create table posts (
Post_ID int NOT NULL,
Category_IDs varchar(50) NOT NULL,
POSTDescription varchar(1000),
POSTTime int NOT NULL
)
Post_ID
是posts
表的主键。
请注意,Category_IDs 现在是varchar
在其中存储类别的值,就像1,2,3
您的帖子属于类别 1,2 和 3 一样。要删除属于类别 1 的所有帖子,您将运行以下查询
$sql = DELETE
FROM `posts`
WHERE FIND_IN_SET( '1', `Category_IDs` ) >0;
没有明确的答案,因为这取决于您的要求,但是很多人已经提到了诸如:
然而,没有多少人会提到innodb 聚集主键索引,以及因此设计良好的 innodb 表如何轻松地执行等效的 myisam 表。
这里有两个解释聚集索引的链接:
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/
另外,请查看以下示例和文章(第二个示例可能特别相关)
5亿行论坛/线程示例
1.25 亿行产品/类别示例
亿行实验
Innodb vs. myisam vs. falcon 基准测试
http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/
希望这可以帮助 :)