【问题标题】:add index on column that contains unique values?在包含唯一值的列上添加索引?
【发布时间】:2018-05-19 18:47:15
【问题描述】:

我有包含唯一值的列,全表扫描将永远进行。

据我了解

如果我使用唯一索引,它将从表的开头开始搜索,然后在找到值时停止

虽然非唯一索引将在 where 语句的最接近范围内搜索我需要的内容

如果我有包含

的列
Maple Louie    
Raphael Gudino    
Nereida Tankersley    
Alina Colletti    
Jeane Lamm    
Shonta Forsman    
Ciara Cardamone

如果我使用非唯一索引,它将在范围内搜索,如

where name = Jeane Lamm

数据库搜索名称是否仅以 j 字母开头?

或者它会进行全扫描??

【问题讨论】:

标签: mysql sql database


【解决方案1】:

虽然索引可以被完全扫描,但这并不是它们对许多操作的真正工作方式。

当你有一个相等时,例如where name = 'Jeane Lamm',那么索引会进行查找。这比扫描快得多。

最常见的索引结构类似于二叉树,因此对特定值的搜索非常非常快。这就是索引可以大大提高查询性能的原因之一。

【讨论】:

  • 感谢您的回复。根据您对唯一列的经验,在 mysql 索引或唯一选项中使用哪个更好?
  • @areviewsapp 。 . .他们做不同的事情。如果您希望该值是唯一的,则使用唯一约束或索引。如果您不想要/不需要唯一性,那么您必须创建一个单独的索引。
  • 抱歉很多问题,ibb.co/cdtLbT 唯一索引和非唯一索引之间的速度有什么不同,因为图片或两者都快?最后一个问题,我注意到 wordpress 总是使用非唯一索引,即使对于不会重复的电子邮件也是如此,这就是我问的原因,因为电子邮件总是唯一的,但它们使用索引而不是唯一的,你知道吗?
  • @areviewsapp 。 . .我不能代表 Wordpress 的实现。据我所知,在使用索引查找单个名称时没有性能差异。
猜你喜欢
  • 2017-02-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
相关资源
最近更新 更多