2011-04-15 73 views
0

1)在MySQL引擎中,MyISAM更好還是InnoDB?2更好地優化數據庫設計的問題

2)我想編程CMS,它可能添加了一條信息多類 如何我必須設計我的數據庫有幾個查詢有更好的表現?

在PHP中如何列出帖子,例如= 1的類別?

謝謝

回答

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現在是類別像1,2,3,如果您的文章屬於cateory 1,2和3 ..和刪除屬於1類的所有帖子你會遇到下面的查詢

$sql = DELETE 
FROM `posts` 
WHERE FIND_IN_SET('1', `Category_IDs`) >0; 
varchar儲值
+0

不,不!我有一個類別表看起來像你的類別表,我想要一個表posts_categories存儲所有類別的職位, – 2011-04-15 11:31:12

+0

關於問題1,當需要外鍵? – 2011-04-15 11:32:00

+0

你的意思是一個帖子可以屬於你的情況下的多個類別?當你想鏈接兩個表時你需要外鍵。例如你希望你的帖子與他們的類別鏈接,那麼你會把'Category_ID'作爲一個外鍵在posts表中。 – 2011-04-15 11:45:02

1

沒有明確的答案,因爲它取決於你的要求,但是,很多人將已經提到過的東西,如:

  • InnoDB的具有行級鎖對MyISAM表鎖定所以InnoDB的可以處理更多併發請求。
  • innodb的是事務性的,從而插入件通常比的myisam慢
  • innodb的是一個適當的RDBMS引擎,以便支持參照完整性(交易ACID唧唧歪歪)
  • innodb的比的myisam更可靠
  • 的myisam快於InnoDB的用於讀取(神話)
  • MyISAM表具有更小的空間比InnoDB的那些(神話)

但是沒有多少人會提到InnoDB的集羣初步ry關鍵指數以及一個精心設計的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/

另外,看看下面的實施例和製品(第二個例子可具有特定的相關性)

希望這有助於:)

+0

參考完整性與DBMS(更少的數據庫)是無關的關係的一個或沒有。 MySQL基於SQL,這意味着它不是真正的關係型。使用InnoDB並不會使MySQL比使用MyISAM更像或更少使用RDBMS。 – sqlvogel 2011-04-15 12:15:18

+1

@dportas,我們在這裏幫助別人不要在他們的問題上批評他們。 – 2011-04-15 12:44:25

+0

編輯過的帖子包括(不是一個適當的RDBMS - 酸性的bla bla bla bla),但它是一個基於閱讀性能的答案。 – 2011-04-15 12:54:45