我将索引添加到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条件中的那些行).
一个真正的专家将能够更好地阐明这一点,但总体思路是,这是件好事:)