2012-02-17 59 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;