我的产品数据库:
id, name, price, 等
大概1000条记录。需要同时做3个下拉菜单,分别按id,name,price排序。用户,可以随便在3个下拉菜单里找东西,然后选择。选择后,3个下拉菜单是联动的。
现在网页上需要分别按id,name,price来排序。我该怎么办?分别select * 三次,然后order by,这样非常慢。也就是说这些记录搜索了3次,就是为了排序,我这样非常不好,导致很慢,而且浪费系统资源。请问有什么方法?

解决方案 »

  1.   

    数据可以查询成如下格式,在下拉菜单被选中,级联作用的时候,可以使用DataView的RowFilter方法来过滤,例如id1选中后得到前三条,name2被选中后得到2、3条。
    id1  name1 price1
    id1  name2 price1
    id1  name2 price2
    id2  name1 price1
    id2  name1 price2
    id3  name1 price1
      

  2.   

    一次查询, 缓存在内存或者xml文件中, 要联动的话, 直接从缓存中拿数据就行了嘛.
      

  3.   

    id1, name1, price1
    id2, name2, price2
    ...应该是怎么对应的.dutguoyi(新鲜鱼排),你说的我还没明白
      

  4.   

    一次查询, 缓存在内存或者xml文件中, 要联动的话, 直接从缓存中拿数据就行了嘛.
    =====================================================================
    这个方法比较好。
    既不浪费数据库的资源,速度也快。
      

  5.   

    如何把查询的结果存到缓存或内存呢?
    ====================================
    那要看你用的是什么开发工具了。
    我只懂.NET,一般是把查询结果以DataSet的方式保存在ViewState里。
    然后再调用。
      

  6.   

    直接用ViewStates('ds') = 查询返回的DataSet(DataView,DataTable等都可以)
    然后在下拉框的SelectedIndexChange里用
    DataSet ds = new DataSet()
    ds = ViewStates('ds')
    然后根据这个ds里面的唯一标识来和下拉框所选择的Item的Value或Text来进行筛选。
      

  7.   

    你要是用.net就搜一下无闪联动菜单吧,一搜一把,可能会满足你的需要