首页 / MYSQL / MySQL NULL值的基数
MySQL NULL值的基数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL NULL值的基数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2620字,纯文字阅读大概需要4分钟。
内容图文
![MySQL NULL值的基数](/upload/InfoBanner/zyjiaocheng/885/60bcd8e617344ebea6e27f31eb18010d.jpg)
这是对真实表的重新创建.说我有这段代码:
CREATE TABLE `testTable` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`col` varchar(10) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `testTable` (col) VALUES (NULL), ('a'), (NULL), ('b'), (NULL), ('c'), (NULL), ('d'), (NULL), ('e'), (NULL), ('f');
ALTER TABLE `testTable` ADD INDEX (`col`);
OPTIMIZE TABLE `testTable`;
SHOW INDEX FROM `testTable`;
我懂了
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| testTable | 0 | PRIMARY | 1 | id | A | 12 | NULL | NULL | | BTREE | | |
| testTable | 1 | col | 1 | col | A | 12 | NULL | NULL | YES | BTREE | | |
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
为什么第12列而不是7的基数?有7个唯一值,那么为什么要分别计算所有NULL?这会增加索引的大小吗?一旦我使用空字符串而不是NULL值,基数就会下降.哪个是首选值?
解决方法:
从MySQL文档here
Cardinality is counted based on statistics stored as integers, so the value is not necessarily exact even for small tables
这意味着将NULL值作为重复存储在列中是有意义的.空值arent已知的值.因此,没有两个NULL相等.
参考here
编辑:这就是为什么您不能将SQL中的NULL值与=进行比较,所以您始终必须使用NULL
结论:基数12是正确的.
编辑:我忘记回答您的其他问题.
这会增加索引的大小吗?答案在MySQL文档中
A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. This constraint does not apply to NULL values except for the BDB storage engine. For other engines, a UNIQUE index permits multiple NULL values for columns that can contain NULL. If you specify a prefix value for a column in a UNIQUE index, the column values must be unique within the prefix.
一旦我使用空字符串而不是NULL值,基数就会下降.哪个是首选值?照此没有首选值.如果空字符串适合您的目的,请使用它们.基数下降,因为空字符串=空字符串是正确的,但NULL = NULL不是
内容总结
以上是互联网集市为您收集整理的MySQL NULL值的基数全部内容,希望文章能够帮你解决MySQL NULL值的基数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。