对 mysql 数据库的电子邮件列建立索引会加快搜索结果吗?

jay*_*ggy 0 php mysql indexing

我有一个大型 mySQL 数据库,它不断执行 SELECT 语句来搜索唯一的电子邮件地址。对电子邮件列建立索引会加快返回结果的速度吗?对这样的列建立索引有什么具体的优点和缺点吗?

谢谢!

Sam*_*tch 5

优点:

  1. SELECT ... FROM table WHERE email = 'foo@bar.com';是的。
  2. SELECT ... FROM table WHERE email LIKE 'foo@bar.com';是的。
  3. SELECT ... FROM table WHERE email LIKE 'foo@%';是的。
  4. SELECT ... FROM table WHERE email LIKE '%@bar.com'; 不。

字符串索引从左到右匹配,您可以通配符字符串的结尾并仍然使用索引,但不能使用开头。

缺点:

注意:这些并不是避免在必要列上放置索引的原因,而是避免不必要地对所有内容建立索引的原因。

  • 每次插入一行时,都必须进行一次计算。
  • 索引占用磁盘上和内存中的空间。
  • 字符串索引有一个长度,例如。它们只考虑前 X 个字节。默认情况下,这是列的整个长度,如果您不断计算大字符串列上的索引,这可能会给 CPU 带来压力。

  • 也可能想添加`= yes`;不带通配符的 LIKE 并不常见 (2认同)