新手刚用mysql,请问一下一张a表3W条的记录在a表的xxx字段建立索引
create index a_xxx on a(xxx desc);
然后select * from table order by XXX 只需要 0.02秒
为什么用
select * from table order by XXX desc就需要 6-7秒不解..求指点是不是没有降序索引的,那小弟该如何使得倒序排序速度快一些呢?
create index a_xxx on a(xxx desc);
然后select * from table order by XXX 只需要 0.02秒
为什么用
select * from table order by XXX desc就需要 6-7秒不解..求指点是不是没有降序索引的,那小弟该如何使得倒序排序速度快一些呢?
解决方案 »
- mysql是否有postgreSQL一样的美元包围符号
- ASP使用ODBC连接到UFT码的MYSQL数据库,读取出来乱码
- 在MYSQL中,我想向auto_increment的主键那样,自动生成UUID。
- mysql怎么判断是否为整数?做到整数输出A样式,非整数输出B样式?
- 很有难度的mysql问题,难道是MYSQL的BUG。
- MySQL的语句中有没有类似for/while那样的循环语句或者类似的实现方法?
- 求一条SELECT语句,有趣,常用,望高手解答
- vb.net如何与MySql连接
- SQL语句的in的用法问题!
- [已解决]关于mysql-connector-odbc-5.1.13-win32.msi安装成功后,ODBC数据源管理器无法显示该MySql驱动的问题解决
- 为什么mysql安装在C盘可以启动服务,安装在D盘不可以启动服务???
- 如何写这个sql
create index a_xxx on a(xxx);
explain select * from table order by XXX desc;看一下,BTREE理论上应该没有这么大的差别。 你的第一个语句是不是执行过了一次再执行的?mysql> select count(*) from (select * from t1 order by id )t;
+----------+
| count(*) |
+----------+
| 499999 |
+----------+
1 row in set (11.86 sec)mysql> select count(*) from (select * from t1 order by id desc)t;
+----------+
| count(*) |
+----------+
| 499999 |
+----------+
1 row in set (11.73 sec)mysql>
可能是执行一次的缘故吧,可是desc 执行多次还是很慢。XXX类型是vchar型的日期字段降序 ,还有个点击量的int字段可能之前执行过一次了,可谓神恶魔
小弟现在的窘境是where 后跟着多个and,并且根据2个字段排序一个升一个降,
在innoDB 中的索引机制查询速度着实惨不忍睹,
每次需要10秒左右并且还得按不同的过滤条件取10次,打开页面的速度可想而知。无奈之下把mysql中的query_buffer存从0改到了80M,inndb_buffer改成50M才得以解决打开首页过慢的问题。