Jon*_* M. 9 php mysql indexing unique-index
如何检查表中的字段是否设置为UNIQUE?
例如,我有一个名为users字段email设置的表UNIQUE和一个picture未设置为的字段UNIQUE,我想在选择之前检查字段是否设置为UNIQUE如果没有设置,则不要这样做SELECT.
我试着SELECT然后计算返回的行数,如果超过1那么它不是UNIQUE,
"SELECT * FROM table WHERE email='$email'"
//...some mysql php line later
if($count > 1){
//return nothing
}
Run Code Online (Sandbox Code Playgroud)
但它没有效率,如果没有重复就会怎么样.
什么是检查一个字段是否被设置为最佳方式UNIQUE的PHP?
编辑:没有重复并不意味着它UNIQUE有财产
Joh*_*rak 12
从SHOW INDEX的文档(由@diEcho找到):
SHOW INDEX返回以下字段:
Non_unique - 如果索引不能包含重复项,则为0;如果可以,则为1.
Column_name - 列名称.
尝试:
SHOW INDEXES
FROM $tablename
WHERE Column_name='$field'
AND NOT Non_unique
Run Code Online (Sandbox Code Playgroud)
请注意,这假定没有跨越多列的UNIQUE索引.如果可以,那么您可能希望使用子查询排除这些.
另请注意,此查询中还显示已禁用的索引(Comment列中的文档中提到了禁用索引的可能性).似乎没有反映这一点的列,因此Comment如果您已禁用索引,则可能需要解析该列.
没有必要与Non_unique数字进行比较- 无论如何,MySQL使用0和1来表示布尔值