数据量在10万条左右,查询语句如下
select ID ," + tdEnName + " from " + tdTableName + " where TRANSFERID ='" + getCookies("user_id") + "' and  archid = '" + archID + "'and  " + DropDownList1.SelectedItem.Value + " like '%" + ASPxTextBox1.Text.ToString().Trim() + "%' and checkstatus like '%" + ASPxCbstatus.SelectedItem.Value + "%'  order by ID desc
经测试带"order by ID desc"与不带"order by ID desc"的查询语句,所耗用的时间相差10多倍,怎么建立索引消除"order by ID desc"所带来的对性能的影响???

解决方案 »

  1.   

    那就在ID上建立索引呀。
    ID 不是主键吗/
      

  2.   

    ID是主键,那TRANSFERID和archid不用建索引了吗?
      

  3.   

    select ID ," + tdEnName + " from " + tdTableName + " where TRANSFERID ='" + getCookies("user_id") + "' and archid = '" + archID + "'and " + DropDownList1.SelectedItem.Value + " like '%" + ASPxTextBox1.Text.ToString().Trim() + "%' and checkstatus like '%" + ASPxCbstatus.SelectedItem.Value + "%' order by ID desc
    就是这样的查询语句建立什么类型的索引啊???有没有人知道啊???
      

  4.   

    索引不能保证排序,要排序就要加order by语句
      

  5.   

    哈哈,可能我表达的不清楚。
    我的意思是,因为我用了order by,(数据量在20万左右)使系统的运行速度变慢了,现在我想给表急加索引,因为加索引可以使查询的速度提升。不知道你能不能明白我的意思??
      

  6.   

    你是主键,在ORACLE中 主键是自动成为索引的。不用建立。
      

  7.   

    不会。
    我的意思是,因为我用了order by,(数据量在20万左右)使系统的运行速度变慢了,现在我想给表急加索引,因为加索引可以使查询的速度提升。不知道你能不能明白我的意思??
      

  8.   

    确实ID自动建立了索引。因为我现在系统的速度很慢。
    ID是主键,那TRANSFERID和archid不用建索引了吗?
      

  9.   

    astr := getCookies("user_id") 
    这个最好不要放在SQL语句中执行,先取出来,再加上条件。如上 astr;