是不是 where 的字段没有索引
解决方案 »
- 菜鸟继续提问,两表查询求 相同字段数量……看上去很简单
- MYSQL将某条记录某字段的值设为该记录其他字段的和
- mysql 5.0.17可以查看以前的数据,可不能添加新记录(急!在线等)
- sql 脚本中插入语句后,在mysql数据库中用select语句查询时有中文的字段显示空?
- MySQL中的数据量太大了,怎么办
- 一个 order by 的问题
- 使用命令行连接出错,请教各位了
- 请教这两句sql 的区别
- mysql中定义id属性为int(2), auto_increment,超过65535后会发生什么现象
- MySQL Update语句的优化问题
- mysql中in_array问题
- mycat 做mysql中间件问题
AND account = '账号,每条sql值都不一样'
AND token <> '令牌,每条sql值都不一样';的结果以供分析。
show create table t_access_token;
如果是myisam则修改为innodb: alter table t_access_token engine=innodb;
2.看一下执行计划,并贴出结果。
explain select * from t_access_token where state=0 and account='xxx' and token <> 'xxx';
谢谢回答,表是Innodb引擎
结果如下id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t_access_token index_merge idx_accesstoken_token,idx_accesstoken_state,idx_accesstoken_account idx_accesstoken_state,idx_accesstoken_account 4,66 523 Using intersect(idx_accesstoken_state,idx_accesstoken_account); Using where
create index sss on t_access_token(state,account,token);
所以我认为可以create index sss on t_access_token(account,token,state);
楼主可以随意变换下位置测试下。
谢谢
所以我认为可以create index sss on t_access_token(account,token,state);
楼主可以随意变换下位置测试下。
谢谢
好的,我明天合起来测下
应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
有的,where的三个字段都分别加上了索引
应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
有的,where的三个字段都分别加上了索引
应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 明白了,但是像我这条需要过滤的语句,如果不用<>,要怎么写
有的,where的三个字段都分别加上了索引
应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 明白了,但是像我这条需要过滤的语句,如果不用<>,要怎么写
看看把前两者建立一个索引,最后哪个单独建一个索引。这个不敢肯定呀。