我的下表包含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);
......但没有奏效。
这可以完成吗?
答案 0 :(得分:1)
您只能在现有字段上使用索引。
答案是:没办法
但是你可以添加另一个包含描述状态的字段(和索引)(空或不)。 使用“插入”和“更新”触发器使该字段始终与描述数据同步。