查询以确定是否已使用某个复合主键?

时间:2011-05-19 03:03:39

标签: mysql primary-key

我有一个带有复合主键的mysql表。表定义看起来像(省略了一些列):

CREATE TABLE `wasteitem` (
  `categoryid` char(4) NOT NULL,
  `classid` char(4) NOT NULL,
  `LIflag` int(11) NOT NULL,
  PRIMARY KEY (`categoryid`,`classid`)
);

我想确定是否已使用任何已知密钥。 如果表只有一个简单的主键,我可以使用如下查询:

select categoryid from wasteitem where categoryid in ('key1','key2','key3','key4')

需要关注的事项:

  • 主键是复合键。
  • 列表中的已知密钥可能很长。
  • 此表非常大(26GB)

2 个答案:

答案 0 :(得分:0)

您可以将您感兴趣的密钥放在另一个(临时)表中,然后加入。

答案 1 :(得分:0)

使用它,寻找钥匙

DESCRIBE wasteitem

类似的东西:

mysql> describe wasteitem;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| categoryid | char(4) | NO   | PRI | NULL    |       |
| classid    | char(4) | NO   | PRI | NULL    |       |
| LIflag     | int(11) | NO   |     | NULL    |       |
+------------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)