Можем ли мы создать индекс для столбца, содержащего значения NULL в MySQL 5.7?

0

Ниже приведен текст из документации MySQL:

Первичный ключ для таблицы представляет столбец или набор столбцов, которые вы используете в своих наиболее важных запросах. Он имеет связанный индекс для быстрой производительности запросов. Производительность запроса зависит от оптимизации NOT NULL, потому что она не может включать значения NULL.

Я не понимаю точный смысл предложения жирным шрифтом из приведенного выше текста. Кто-то, пожалуйста, объясните мне.

Кроме того, дайте мне знать, можем ли мы создать индекс в столбце, содержащем значения NULL в MySQL 5.7? Если нет, то почему?

Благодарю вас.

Теги:
indexing
null
primary-key
mysql-5.7

1 ответ

0
Лучший ответ

Ключ PRIMARY используется для организации данных на диске, и поскольку существует связь с физическим расположением данных, вы не можете иметь какую-либо часть первичного ключа, равную NULL.

Необязательный индекс CAN может иметь один или несколько столбцов, которые допускают NULL. демонстрация

CREATE TABLE 'my_docs' (
  'id' int(6) unsigned NOT NULL AUTO_INCREMENT,
  'rev' int(3) ,
  'content' varchar(200) NOT NULL,
  PRIMARY KEY ('id')
) DEFAULT CHARSET=utf8;


INSERT INTO 'my_docs' ('rev', 'content') VALUES
  (1, 'The earth is flat'),
  (1, 'One hundred angels can dance on the head of a pin'),
  (NULL, 'The earth is flat and rests on a bull\ horn'),
  (3, 'The earth is like a ball.');

alter table 'my_docs' add key my_added_index ('rev');

SELECT id, rev, content
FROM 'my_docs'
where rev = 3

| id | rev |                   content |
|----|-----|---------------------------|
|  4 |   3 | The earth is like a ball. |


+---+-------------+-----------+------+----------------+----------------+---------+-------+------+----------+-------+
| d | select_type |   table   | type | possible_keys  |      key       | key_len |  ref  | rows | filtered | Extra |
+---+-------------+-----------+------+----------------+----------------+---------+-------+------+----------+-------+
| 1 |    SIMPLE   |   my_docs | ref  | my_added_index | my_added_index |       5 | const |    1 |   100.00 |       |
+---+-------------+-----------+------+----------------+----------------+---------+-------+------+----------+-------+

Ещё вопросы

Сообщество Overcoder
Наверх
Меню