2012-04-03 117 views
0

上工作,而自从-3我得到了类& categories_description表结构什么是“idx_categories_desc_categories_name”的含义,自从

CREATE TABLE IF NOT EXISTS `osc_categories` (
    `categories_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `categories_image` varchar(255) DEFAULT NULL, 
    `parent_id` int(10) unsigned DEFAULT NULL, 
    `sort_order` int(11) DEFAULT NULL, 
    `date_added` datetime DEFAULT NULL, 
    `last_modified` datetime DEFAULT NULL, 
    PRIMARY KEY (`categories_id`), 
    KEY `idx_categories_parent_id` (`parent_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; 

CREATE TABLE IF NOT EXISTS `osc_categories_description` (
    `categories_id` int(10) unsigned NOT NULL, 
    `language_id` int(10) unsigned NOT NULL, 
    `categories_name` varchar(255) NOT NULL, 
    PRIMARY KEY (`categories_id`,`language_id`), 
    KEY `idx_categories_desc_categories_id` (`categories_id`), 
    KEY `idx_categories_desc_language_id` (`language_id`), 
    KEY `idx_categories_desc_categories_name` (`categories_name`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

这里我没有得到索引的meanning

“idx_categories_desc_categories_id”,

“idx_categories_desc_language_id”,

“idx_categories_desc_categories_name”

这个索引有什么用,这是什么意思?

+0

[MySQL KEY/UNIQUE KEY]的可能重复(http://stackoverflow.com/questions/8742575/mysql-key-unique-key) – random 2012-04-03 22:24:12

+1

否;这不是该问题的重复。 OP想要了解osCommerce索引命名约定;就这样。 – 2012-04-04 19:16:58

+0

如果这是osCommerce为什么选择某些名称的情况,这将脱离主题/不具建设性。如果问他们为什么要这样设置,那将是重复的。在任何一种情况下,由于所有这些猜测都没有澄清,所以这不是真正的问题@sco – random 2012-04-05 22:09:16

回答

1

的三个令牌

"idx_categories_desc_categories_id", 

"idx_categories_desc_language_id", 

"idx_categories_desc_categories_name" 

只是名字 - 没有什么特别之处他们。他们可能被称为“富”,“酒吧”和“巴兹”,这将是很好的。

它们遵循osCommerce命名约定,使用idx_作为索引,然后是表名称,然后是关键字段。但这只是开发者的惯例;它不是数据库所要求的。

1

这三个索引是为括号(categories_id,language_id,categories_name)中指定的表格创建的。 KEY关键字是INDEX关键字的同义词。它背后并没有什么特别的魔力。

我想这三个索引是用来加快这些表上的数据检索/排序操作。

索引“idx_categories_desc_categories_id”是冗余的方式,主键上的复合索引的左侧部分已经覆盖了“categories_id”。你提到