http://topic.csdn.net/u/20091110/15/8f32b08a-4d69-4ea6-8f08-58aaf9f7e51e.html前两天提问的,数据库中30多W条数据打不开页面,后来加上索引,基本上解决,但是经过反复测试,发现两个问题,
第一个问题是,只要SQL语句中,某个字段查询值带3就会超慢 ,很奇怪的问题,不知道为什么。
第二个问题是,因为业务需要,要求对数据进行排序(至少要按时间倒序),可是加上排序,速度又慢下来了,即使通过MYSQL执行也一样,超慢。请问谁知道怎么能对排序这部份优化处理,MYSQL或PHP中都可以。

解决方案 »

  1.   

    你现在的SQL语句是怎样的?贴出来吧!
      

  2.   


    你的SQL语句是什么?表结构是什么?
    另外提供一下 explain select .... 的信息。
      

  3.   

    优化是需要考虑的东西比较多,需要分析你的数据,索引。提供你的 show create table xx, show index from xxx, explain select ...信息。
      

  4.   

    LZ应贴出更详尽的信息,让mysql版主ACMAIN_CHM给你号号脉.
      

  5.   

    是啊,explian出来的各列信息够写一本书了.
      

  6.   

    所以DBA工资相对高不少啊,呵呵.
      

  7.   

    不好意思,各位,上午出去办事!刚回来!
    我的表结构
    create table ch_news(
    id int(10) unsigned NOT NULL auto_increment,
    channel int(10),
    classid int(10),
    node varchar(255),
    istop int(5),
    iscommend int(5),
    hits int(10),
    …………
    )索引,news_channel_node on news (channel,node)view news :
    select a.*,b.title as classname from news as a inner join class as b on a.classid=b.id where channel=1 and node like '|2|%' order by id desc
    (class 为分类表,有标题,图片,简介等信息)explain:
      

  8.   

    试下建个(channel,id)的联合索引,看能不能消掉using filesort.
    还有where后面的条件,既然是联表,最好加上具体的表别名.where a.channel=1 and a.node like '|2|%' order by a.id desc 
      

  9.   

    这里只是列举了一个ID,但我需要根据实际情况,要order by 别的字段,同样是出现这种问题,
    那是不是我要把那些全加上索引?channel是固定要查询的字段
      

  10.   

    LZ别先费劲了,我的库进20W就已经上搜索引擎了。回去研究下SPHINX,百万级数据查询毫秒之内。两年前我也是因为组合查询太慢,不得不引进搜索引擎,很好用的!
      

  11.   

    sphnix 和 sphider的区别能讲下不? 
      

  12.   

    从EXPLAIN结果很显然,没有利用索引!show index from xxtablename;贴一下你的结果。请直接贴文本而不是图片。
      

  13.   


    回网友,这两个没有什么可比性.SPHINX是解决程序与DATABASE频繁调用导致慢甚至死机瓶颈,而后者主要功能类似ALEXA.