请教各位老大,我有个数据表有20多万测试数据,有4个分类,通过分类id来查询数据,但是我发现不在分类id建索引时,有些分类查询快,有些查询慢,比如有个分类有50000条记录,查询时间0.8左右,有个分类数据只有30000多却要2秒多,我就在分类添加索引,可是发现原来慢的现在变快了,原来快的现在却变慢了,用EXPLAIN检查查询语句,发现有的分类使用索引,而有的没使用,还有,发现索引的数量只有在单数时才更新,就是说如果商品表中有4类商品,那么索引数只显示为3,如果我在添加一个分类商品,那么它就正常了,显示为5
查询语句:select 字段列表 from goods where goods_sort in(3) order by goods_id desc
查询语句:select 字段列表 from goods where goods_sort in(3) order by goods_id desc
解决方案 »
- tomcat +MySQL数据源问题!!!!!!!
- SQL语句优化
- mysql用SSH远程连接访问的问题
- 怎么用脚本来启动绿色版的Mysql
- mysql备份与还原命令
- 如何在Mysql 中,跟踪正在运行的Sql语句?象在Sql Server中的事件探查器可以跟踪一样。
- 这个删除语句怎么写.高手帮忙看下
- 求救,数据文件的导入。
- 急用,希望大家给我解释一下这个问题
- mysql 没有配置文件 .ini文件
- ★★急问★★ MySQL是否支持 【[字段1] like '%'+[字段2]+'%'】 这种查询?
- 我用ADO连接mysql 5.0,起初用ODBC3.51的驱动,连接正常,但是查询结果中文不显示;后用5.0的驱动,中文可以显示,但是连接速度极慢,请
为什么要这么做呢?是因为当结果集很大时,使用索引反倒会慢。因为MySQL首先搜索索引,而后根据索引再搜索表中记录,相当于先读取索引记录,再根据索引记录读取表记录,而索引记录又没有有效的减少所要搜索的表记录,所以就慢了。不知道我说明白了没有,谢谢
select * from tablename where index_col1 in(……) and index_col2 = 1;
这时会选择index_col2作为索引列。
当MySQL没有其它选择时会用到in条件列作为索引列,如:
select * from tablename where index_col1 in(……) and noindex_col2 = 1;
我试试
select goods_name,goods_img from goods where goods_sort in(3)