首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引mysql是否已损坏?

问索引mysql是否已损坏?
EN

Stack Overflow用户
提问于 2012-08-29 20:40:54
回答 2查看 1.7K关注 0票数 1

有一个mysql表,我认为唯一索引已损坏。当我执行以下sql时:

代码语言:javascript
复制
SELECT field_b FROM table LIMIT 0,10 

响应为NULL (10行为NULL)。

但如果我执行

代码语言:javascript
复制
SELECT field_b FROM table WHERE field_a = 1

我正在获取(非空)数据。发生什么事了呢?

以下是表属性

代码语言:javascript
复制
field_a and field_b = INT(11)
field_a = PRIMARY
field_b = UNIQUE INDEX
Table type = INNODB

此表中有200k+行。

EN

回答 2

Stack Overflow用户

发布于 2012-08-29 20:49:03

尝试filed_b而不是field_b

代码语言:javascript
复制
SELECT filed_b From table limit 0,10 //spelling mistake
票数 0
EN

Stack Overflow用户

发布于 2012-08-29 21:09:47

在具有唯一索引的列中可以有重复的空值。唯一索引只保证非空值是唯一的。

正如documentation所指出的,BDB存储引擎有一个例外。

唯一索引创建了一个约束,使得索引中的所有值都必须是不同的。如果尝试添加键值与现有行匹配的新行,则会发生错误。此约束不适用于空值,但BDB存储引擎除外。

至少有10行field_b为NULL,并且在发出查询时会显示这些行。

要查看field_b为NULL的所有行,请尝试以下命令:

代码语言:javascript
复制
SELECT * FROM table WHERE field_b IS NULL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12178208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档