我有以下mysql查询:
CREATE TABLE `sampledata`.`ORDERFACT` (
`ORDERNUMBER` int(11) DEFAULT NULL,
`PRODUCTCODE` varchar(50) DEFAULT NULL,
`QUANTITYORDERED` int(11) DEFAULT NULL,
`PRICEEACH` decimal(17,5) DEFAULT NULL,
`ORDERLINENUMBER` int(11) DEFAULT NULL,
`TOTALPRICE` decimal(17,0) DEFAULT NULL,
`ORDERDATE` datetime DEFAULT NULL,
`REQUIREDDATE` datetime DEFAULT NULL,
`SHIPPEDDATE` datetime DEFAULT NULL,
`STATUS` varchar(15) DEFAULT NULL,
`COMMENTS` longtext,
`CUSTOMERNUMBER` int(11) DEFAULT NULL,
`TIME_ID` varchar(10) DEFAULT NULL,
`QTR_ID` bigint(20) DEFAULT NULL,
`MONTH_ID` bigint(20) DEFAULT NULL,
`YEAR_ID` bigint(20) DEFAULT NULL,
KEY `idx_ORDERFACT_lookup` (`ORDERNUMBER`,`PRODUCTCODE`,`QUANTITYORDERED`,`PRICEEACH`,`ORDERLINENUMBER`,`TOTALPRICE`,`ORDERDATE`,`REQUIREDDATE`,`SHIPPEDDATE`,`STATUS`,`CUSTOMERNUMBER`,`TIME_ID`,`QTR_ID`,`MONTH_ID`,`YEAR_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
有人可以解释一下最后三行会做什么:
(KEY `idx_ORDERFACT_lookup` ...)
答案 0 :(得分:1)
(KEY idx_ORDERFACT_lookup
...)
将在括号中的所有列上创建复合主键。
如果您想了解更多信息,请阅读MySQL :: MySQL 5.0 Reference Manual :: 7.5.2 Multiple-Column Indexes
<强>附录:强>
实际上,如果您正在设计此表,我可能对您提出的建议很少:
PRICEEACH
...你真的需要存储5位小数的价格吗?然后TOTALPRICE
有0位小数...... monthid, quarterid
看起来很奇怪,特别是BIGINT
,但可能你有这个要求。只是一些想法。
答案 1 :(得分:0)
(KEY idx_ORDERFACT_lookup
...)将为表添加索引
如果你真的想深挖那么访问:
http://dev.mysql.com/doc/refman/5.0/en/create-table.html
这是12.1.10主题。专注于第三个灰盒子。你会得到这样的东西:
{INDEX | KEY} [index_name] [index_type](index_col_name,...)[index_type]
一切都是方括号是可选的。
希望它有所帮助!!!