日期:2014-05-17  浏览次数:20539 次

求一高效SQL语句?
我的数据库是这样设计的  
id typename parentid
01151811010101030103 李明 011518110101010301

id和pid 现在采用VerChar类型  
id 是子类id parentid 是父类ID 
通过父类可以查看到所有的子类

每二个数字是一级 最多有10级 也就是20位字符 这样的循环绑定 数据量大约在1W条



web页面用TreeView显示

数据处理用
C# code
void BindData()
    {
        DataSet ds = new XJBLL.xjBookType().GetList("");
        TreeView1.Nodes.Clear();
        TreeNode node = new TreeNode();
        node.Value = ds.Tables[0].Rows[0]["ID"].ToString();
        node.Text = ds.Tables[0].Rows[0]["TypeName"].ToString();
        node.Expand();
        TreeView1.Nodes.Add(node);
        BindChild(node, node.Value);
    }
    void BindChild(TreeNode node, string ParentID)
    {
        DataSet ds = new XJBLL.xjBookType().GetList(" and ParentID='" + ParentID + "' ");
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            TreeNode childnode = new TreeNode();
            childnode.Value = ds.Tables[0].Rows[i]["ID"].ToString();
            childnode.Text = ds.Tables[0].Rows[i]["TypeName"].ToString();
            node.ChildNodes.Add(childnode);
            BindChild(childnode, childnode.Value);
        }
    }  




现在打开这个页面 大概在30秒后显示 出内容且SQL数据库占用很高的CPU 请求有没有别的办法 提高数据处理的速度 谢谢了

------解决方案--------------------
第一,这个应该不是更新很频繁的数据,你完全可以用cache来缓存一下数据
第二,你一下全读出来当然会很慢,建议你当节点展开的情况下去读节点下面的数据,这样一次读数据的条数就会减少,速度就会快一些