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;
私がやりたいのは、説明が null の製品をすばやく取得できるようにすることです。空の文字列は忘れてください。
説明によってキーを追加すると、説明全体がインデックス化され、そのような大きなインデックスは必要ありません。私は確かにできる:
ALTER TABLE products ADD KEY has_description (description(1));
これにより、最初の文字のみのインデックスが作成されます。これは「完全な」インデックスを持つよりもはるかに優れていますが、適切なインデックスを作成する方法があるかどうかを知りたいです。
追加の要件は、この値を持つ新しい列を追加することではありません。これは些細なことですが、テーブルに含めたくない情報が重複しています。
すでに次のようなものを試しました
ALTER TABLE products ADD KEY has_description (description IS NULL);
...しかし、うまくいきませんでした。
これはまったくできますか?