日期:2014-05-16  浏览次数:20747 次

请问,检索的时候,是用userid快呢,还是用email快?
一个表,有userid(int型)、email(varchar型)
email加了索引
请问,检索的时候,是用userid快呢,还是用email快?
数据库是mysql5.1

------解决方案--------------------
具体的看一下explain select userid,email from where table1;
------解决方案--------------------
当然是userid主键快

email是先要搜到这行数据主键userid的值 再用userid去搜索数据
------解决方案--------------------
肯定是int 类型快,

------解决方案--------------------
主要是看你的查询语句是怎么样的。
唯一约束email 加上索引 比主键慢不了多少
------解决方案--------------------
你这个语句就是通过主键来检索的嘛 
email 加上索引也不会对它产生什么样子的影响 对dml操作会有一定的影响
要是你的程序里面有这样的查询:
SELECT * FROM empuser WHERE email = XXX
那么它用到的就是 email 上加的索引。

如果你要检索出来的数据大于总数据量的30%左右 理论上说,全表扫描比索引检索的效率要高
------解决方案--------------------
引用SELECT * FROM empuser WHERE user_id=#user_id#;

------解决方案--------------------
探讨

引用SELECT * FROM empuser WHERE user_id=#user_id#;

理论上是一样快。但细节上还是要看表的存储引擎是什么? 如果是INNODB,则主键会快一点儿。如果是MYISAM的则应该相同。

------解决方案--------------------
如果你不用检索,你闲的蛋疼啊。还加一个
具体要看你的语句 要查什么
------解决方案--------------------
着个需要参考的有点多,看你的SQL 怎么利用索引,也看你的查询需求,可能需求不会用到其中的任何一个索引,
同时与存储引擎有一定关系,比如选择innodb,那样会相对于其他迎亲快点,可以参考下索引的实现原理1