有字段A,B
其中字段A是主键排序规则是B从大到小,A从小到大
编写语句:
select A from tablename order by B desc, A limit XX;建立联合索引,B为第一项,A为第二项。这个时候还是会进行重新排序。
该如何建这个索引才能让它不重新排序直接使用索引呢?

解决方案 »

  1.   

    走的,我加了force index
    如果A和B的升降序是一致的话,是不会重排的。
      

  2.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    CREATE TABLE 'test' (
    'A' INT NOT NULL,
    'B' INT NOT NULL,
    PRIMARY KEY('A'),
    INDEX 'testindex' ('B','A')排序:
    explain select A from test order by B desc, A
    Using index; Using filesort现在我不希望出现Using filesort
    有没有办法解决呢?尝试设置B的索引为降序
    ALTER TABLE 'test'
    DROP INDEX 'testindex'
    ,ADD INDEX 'testindex' ('B' DESC, 'A' ASC);执行时显示成功,但查看后发现没有改变任何东西版本是mysql 5.1
      

  4.   

    数据:
    insert into test values (1, 2)
    insert into test values (2, 2)
    insert into test values (3, 1)
    insert into test values (4, 3)
      

  5.   

    排序:
    explain select A from test order by B desc, A
    Using index; Using filesort现在我不希望出现Using filesort
    有没有办法解决呢?
    就是使用排序时数据库还是会重排一次,我希望mysql不重排一次,提高效率。实际数据量可能会很大。