在优化MySQL查询时,高key_len值表示什么?

我将索引添加到mysql查询,下面是查询.

SELECT * 
FROM 
    JOBSEEKER 
WHERE 
    JOBSEEKER.VCEMAIL='godavary@gmail.com' 
    AND JOBSEEKER.ITJOBSEEKERSTATUS<>5 LIMIT 1

使用EXPLAIN:

*************************** 1. row ***************************
       id: 1
select_type: SIMPLE
    table: JOBSEEKER
     type: ALL
possible_keys: NULL
      key: NULL
  key_len: NULL
      ref: NULL
     rows: 121702
    Extra: Using where
1 row in set (0.00 sec)

我在表中添加了索引,并得到以下结果:

*************************** 1. row ***************************
       id: 1
select_type: SIMPLE
    table: JOBSEEKER
     type: ref
possible_keys: EMAIL_I
      key: EMAIL_I
  key_len: 103
      ref: const
     rows: 1
    Extra: Using where
1 row in set (0.00 sec)

我看到这里的密钥长度很高,但是以前是空/ NULL.索引后,查询执行时间得以缩短.

可以吗?还是应该为ITJOBSEEKERSTATUS编制索引?

解决方法:

您知道,key_len属性是索引中使用的键的长度.原始表中的NULL值表示根本没有键,因此也没有索引.在这种情况下,“高”键值表示要索引的字节数,例如,使用字符串(例如电子邮件地址)比使用整数ID的字节数更高.尽管键长很长,但是使用索引可以帮助MySQL更快地找到正确的行,这可以通过缩短执行时间来证明.

此外,您可以看到查询从ALL(全表扫描-缓慢,通常希望避免)到ref(更好-在这种情况下,您只匹配WHERE条件中的那些行).

一个真正的专家将能够更好地阐明这一点,但总体思路是,这是件好事:)

上一篇:hdu 1059 (多重背包) Dividing


下一篇:PHP MySQL-获取特定行的索引