需要mySQL查询说明

时间:2011-11-11 06:56:25

标签: mysql

我有以下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` ...)

2 个答案:

答案 0 :(得分:1)

(KEY idx_ORDERFACT_lookup ...)

将在括号中的所有列上创建复合主键。

如果您想了解更多信息,请阅读MySQL :: MySQL 5.0 Reference Manual :: 7.5.2 Multiple-Column Indexes

<强>附录:

实际上,如果您正在设计此表,我可能对您提出的建议很少:

  1. 在某些系统/ dbrms的列名称中使用小写字母更具跨平台兼容性
  2. PRICEEACH ...你真的需要存储5位小数的价格吗?然后TOTALPRICE有0位小数......
  3. 那些monthid, quarterid看起来很奇怪,特别是BIGINT,但可能你有这个要求。
  4. 只是一些想法。

答案 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]
一切都是方括号是可选的。

希望它有所帮助!!!

相关问题