2

我有下表,其中包含 1,000,000 多条记录:

CREATE TABLE `products` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `description` text,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我想做的是能够快速获取具有空描述的产品 - 忘记空字符串。

如果我通过描述添加一个键,整个描述都会被索引,我不想要这么大的索引。我确实可以这样做:

ALTER TABLE products ADD KEY has_description (description(1));

这将创建一个只有第一个字符的索引。这比拥有“完整”索引要好得多,但我想知道是否有办法创建适当的索引 - 例如布尔索引,真/假取决于产品是否分别具有描述。

附加要求不是添加具有此值的新列 - 这是微不足道的,但它是我不想在表中包含的重复信息。

已经尝试过类似的东西

ALTER TABLE products ADD KEY has_description (description IS NULL);

......但没有工作。

这完全可以做到吗?

4

1 回答 1

1

您只能在现有字段上拥有索引。

答案是:没办法

但是您可以添加另一个包含描述状态(是否为空)的字段(和索引)。使用插入和更新触发器使该字段始终与描述数据同步。

于 2012-12-20T19:28:09.740 回答