读书人

数据库查询很慢请求改进一上 多谢了

发布时间: 2012-11-15 15:16:15 作者: rapoo

数据库查询很慢,请求改进一下 谢谢了
我的数据库是这样设计的
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 请求有没有别的办法 提高数据处理的速度 谢谢了

[解决办法]
parentID=过滤就可以

例子

C# code
  public System.Data.DataTable dt;  protected void Page_Load(object sender, EventArgs e)  {        if (!IsPostBack)    {      dt = new System.Data.DataTable();      dt.Columns.Add(new System.Data.DataColumn("ID", typeof(System.String)));      dt.Columns.Add(new System.Data.DataColumn("TypeName", typeof(System.String)));      dt.Columns.Add(new System.Data.DataColumn("ParentID", typeof(System.String)));      dt.Rows.Add("01", "根", "");      dt.Rows.Add("0101", "子类1", "01");      dt.Rows.Add("0102", "子类2", "01");      dt.Rows.Add("0103", "子类3", "01");      dt.Rows.Add("010101", "子类1_1", "0101");      dt.Rows.Add("010102", "子类1_2", "0101");      dt.Rows.Add("010103", "子类1_3", "0101");      //以上数据可以从数据库查询      BindData();    }  }  void BindData()  {    TreeView1.Nodes.Clear();    TreeNode node = new TreeNode();    node.Value = dt.Rows[0]["ID"].ToString();    node.Text = dt.Rows[0]["TypeName"].ToString();    node.Expand();    TreeView1.Nodes.Add(node);    BindChild(node, node.Value);  }  void BindChild(TreeNode node, string ParentID)  {    System.Data.DataRow[] dr = dt.Select("ParentID='" + ParentID + "'","ID");    for (int i = 0; i < dr.Length; i++)    {           TreeNode childnode = new TreeNode();      childnode.Value = dr[i]["ID"].ToString();      childnode.Text = dr[i]["TypeName"].ToString();      node.ChildNodes.Add(childnode);      BindChild(childnode, childnode.Value);    }  } 

读书人网 >asp.net

热点推荐