Я использую MYSQL как базу данных. Проверьте это определение таблицыРазрешить Нулевые значения для индексированного столбца или NOT NULL для индексированного столбца в MYSQL? То, что хорошо?
CREATE TABLE `test`.`header`
(
`header_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(500) NOT NULL,
`body` VARCHAR(5000) NOT NULL,
`created_by_id_ref` BIGINT UNSIGNED NOT NULL,
`created_date` DATETIME NOT NULL,
`updated_date` DATETIME NULL DEFAULT NULL,
`is_void` TINYINT(1) NULL DEFAULT NULL,
PRIMARY KEY (header_id`)) ENGINE=INNODB CHARSET=latin1 COLLATE=latin1_swedish_ci;
В моем интерфейсе пользователь может удалить любую запись, просто выбрав запись из вида сетки. Поэтому в этом случае я просто обновляю статус is_void до true.
Я объявил эту колонку этим синтаксисом. что показано выше. Вот это снова.
`is_void` TINYINT(1) NULL DEFAULT NULL,
Таким образом, если я добавлю индекс в этот столбец, это объявление столбца хорошее? В этом случае значения по умолчанию имеют нулевые значения. Для аннулированных записей это будет «1». Так что, если я буду фильтровать любого из этих записей для аннулированного записей я должен использовать
Select ........ where is_void=1;
Если я хочу, чтобы фильтровать не аннулированы записи можно использовать
Select ........ where is_void IS NULL;
Так это объявление NULL влияет на мой выбор производительности запроса? (Помните, я индексироваться этот столбец)
или я объявляю мою колонку, как
`is_void` TINYINT(1) NOT NULL,
, а затем я должен вставить «0» для не аннулирована записей. Затем, если я хочу фильтровать невооруженные записи, я могу использовать
Select ........ where is_void=0;
Итак, что лучше? где is_void = 0; или где is_void IS NULL;
спасибо.
Проверьте план выполнения, и вы увидите. –
Я бы пошел с '1' и' 0' вместо '1' и' null' для согласованности, условности и более простой разработки. По-моему, я все еще склоняюсь к «1» и «0». Мне тоже не нравится «null». :) –
Andy Считаете ли вы, что методы 1 и 0 и 1 и NULL являются показателями производительности равными? или разные? – Sylar