关于更好地优化数据库设计的2个问题

| 1)在mysql引擎中,MyISAM是Better还是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
表的主键。 注意,如果您的帖子属于类别1,2和3,请注意Category_ID现在是value5ѭ中类别的存储值,如
1,2,3
。并且要删除属于类别1的所有帖子,您将运行以下查询
$sql = DELETE
FROM `posts`
WHERE FIND_IN_SET( \'1\', `Category_IDs` ) >0;
    
没有确切的答案,因为这取决于您的要求,但是很多人已经提到了以下内容: innodb具有行级锁定与myisam表锁定,因此innodb可以处理更多并发请求。 innodb是事务性的,因此插入通常比myisam慢 innodb是适当的RDBMS引擎,因此支持参照完整性(事务ACID bla bla bla) innodb比myisam更可靠 myisam的读取速度比innodb更快(神话) myisam表的占用空间比innodb的占用空间小(神话) 但是,没有多少人会提到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亿行论坛/线程示例 MySQL和NoSQL:帮助我选择合适的一个 1.25亿行产品/类别示例 重写mysql select以减少时间并将tmp写入磁盘 1亿行实验 传递大量数据的查询的最佳MySQL设置? Innodb,myisam,falcon基准 http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/ 希望这可以帮助 :)     

要回复问题请先登录注册