2012-02-17 58 views
0

我正在構建一個PHP和MySQL的小插件,基本上會採取許多不同的操作(大約50)並將它們存儲在數據庫中。它將保留用戶執行的50個操作中的每一個的所有記錄,並且用戶數量可能達到50,000個。所以你可以看到有很多條目存儲在一張表中。數據庫設計的效率

這裏是表:

-- Table 
CREATE TABLE `[db_prefix]entries` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    `user_id` int(11) NOT NULL, 
    `content_id` int(11) NOT NULL, 
    `lang_key` varchar(100) collate utf8_unicode_ci NOT NULL, 
    `params` text collate utf8_unicode_ci NOT NULL, 
    `date` timestamp NOT NULL default CURRENT_TIMESTAMP, 
    `type` varchar(100) collate utf8_unicode_ci NOT NULL, 
    `view` enum('true','false') collate utf8_unicode_ci NOT NULL default 'true', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

基本上,對於用戶操作一整個月將在時刻加載爲單個用戶。

有沒有辦法在create table語句中創建索引?我想可能指數USER_ID和CONTENT_ID

感謝您的幫助

+2

我建議你在完成你的設計 – 2012-02-17 15:03:29

+0

之前在SELECT語句的WHERE子句和數據庫索引讀取多達正如@MarkBaker最好熟悉建議與索引等,然而容量明智的數據量不是MySQL的問題處理,只要你有明智的索引和查詢。這個問題非常模糊,因此會提出進一步考慮你的目標/澄清。 – 2012-02-17 15:08:51

+0

我更新了一些更詳細的問題。謝謝 – tmartin314 2012-02-17 15:14:29

回答

0
-- Table 
CREATE TABLE `[db_prefix]entries` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    `user_id` int(11) NOT NULL, 
    `content_id` int(11) NOT NULL, 
    `comment_id` int(11) NOT NULL, 
    `lang_key` varchar(100) collate utf8_unicode_ci NOT NULL, 
    `params` text collate utf8_unicode_ci NOT NULL, 
    `date` timestamp NOT NULL default CURRENT_TIMESTAMP, 
    `type` varchar(100) collate utf8_unicode_ci NOT NULL, 
    `view` enum('true','false') collate utf8_unicode_ci NOT NULL default 'true', 
    PRIMARY KEY (`id`), 
    KEY `user_id` (`user_id`), 
    KEY `content_id` (`content_id`), 
    KEY `date` (`date`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;