一个表,有userid(int型)、email(varchar型)
email加了索引
请问,检索的时候,是用userid快呢,还是用email快?
数据库是mysql5.1
email加了索引
请问,检索的时候,是用userid快呢,还是用email快?
数据库是mysql5.1
解决方案 »
- 删除数据时提示#1030 - Got error -1 from storage engine
- mysql中有关查询in的用法
- 存储过程
- 哪位简单说说在ubuntu下用c++怎么连接mysql?
- mysql view script
- 求 多线程访问mysql 实例?
- ● Windows平台下MySQL建表的时候怎么指定不了数据文件的目录阿?
- (大家好)这样的语句在mysql里能通过吗:select f1 from table1 where f2 in (select f3 from table2);
- VS2012连接数据库时更改数据源找不到mysql的数据源
- mysql面试题,求解释
- 单表超过2G,查询结果约800W条的效率问题
- 求助大量数据插入MySQL
email是非空的,有唯一约束
我听说如果是oracle的话,int的主键userid检索不如加了索引的email快,因为如果没建索引走全表扫描。
唯一约束email 加上索引 比主键慢不了多少
email 加上索引也不会对它产生什么样子的影响 对dml操作会有一定的影响
要是你的程序里面有这样的查询:
SELECT * FROM empuser WHERE email = XXX
那么它用到的就是 email 上加的索引。如果你要检索出来的数据大于总数据量的30%左右 理论上说,全表扫描比索引检索的效率要高
SELECT * FROM empuser WHERE user_id=#user_id#;
和
SELECT * FROM empuser WHERE email=#email#;
之间难以取舍!
检索出来就一条数据。
理论上是一样快。但细节上还是要看表的存储引擎是什么? 如果是INNODB,则主键会快一点儿。如果是MYISAM的则应该相同。
建表时,定义的engine=innodb
这么讲还是主键快了。
其他的索引都是指向主键索引。查询效率来说相差也不大的,查询时间是相同数量级的。
同时与存储引擎有一定关系,比如选择innodb,那样会相对于其他迎亲快点,可以参考下索引的实现原理1