首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

小弟我做了个QQ群数据库泄漏信息查询,但是代码效率很低,很耗资源,贴出源码请大神改进

2013-11-26 
我做了个QQ群数据库泄漏信息查询,但是代码效率很低,很耗资源,贴出源码请大神改进!using Systemusing Syst

我做了个QQ群数据库泄漏信息查询,但是代码效率很低,很耗资源,贴出源码请大神改进!


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

public partial class QQquery : System.Web.UI.Page
{
    DataSet finaldata = new DataSet();
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "over";
    }
    //数据集转字符串数组,用于遍历
    public string[] ds2string(DataSet _ds)
    {
        int n = _ds.Tables[0].Rows.Count;
        string[] s = new string[n];
        for (int i = 0; i < n; i++)
        {
            s[i] = _ds.Tables[0].Rows[i][0].ToString();
        }
        return s;
    }

    //获取所有数据库的名字
    public DataSet getAllDataBase()
    {
        SqlConnection coon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
        string sqlstr = "select name from sys.databases where name like 'GroupData%'";
        SqlDataAdapter da = new SqlDataAdapter(sqlstr, coon);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
    }

    //获取数据库下的所有表
    public DataSet getTable(string _DataBaseName)
    {
        SqlConnection coon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
        string sqlstr = "SELECT name FROM " + _DataBaseName + "..SysObjects Where XType='U' and name!='dtproperties'";
        SqlDataAdapter da = new SqlDataAdapter(sqlstr, coon);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
    }

    //获取数据库中表的数据
    public DataSet QueryData(string _DataBaseName, string _TableName, string _QueryNum)
    {
        SqlConnection coon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
        string sqlstr = "select * from " + _DataBaseName + ".." + _TableName + " where QQNum ='" + _QueryNum + "'";
        SqlDataAdapter da = new SqlDataAdapter(sqlstr, coon);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
    }

    //查询按钮
    protected void Button_query_Click1(object sender, EventArgs e)
    {
        //输入要查询的qq号码
        string qq = TextBox_QQ.Text;
        //遍历数据库
        foreach (string database in ds2string(getAllDataBase()))
        {
            //遍历数据库中的表
            foreach (string table in ds2string(getTable(database)))
            {
                //查询数据,结果添加到数据集finaldata中
                finaldata.Merge(QueryData(database, table, qq));
            }
        }
        //查询完毕,绑定数据
        GridView1.DataSource = finaldata;


        GridView1.DataBind();
    }
}



若干个MDF文件附加的数据库:
小弟我做了个QQ群数据库泄漏信息查询,但是代码效率很低,很耗资源,贴出源码请大神改进

数据库中的表:
小弟我做了个QQ群数据库泄漏信息查询,但是代码效率很低,很耗资源,贴出源码请大神改进

表的结构
小弟我做了个QQ群数据库泄漏信息查询,但是代码效率很低,很耗资源,贴出源码请大神改进

现在的问题是,数据量太大,在我的2G内存的机器上,一查询就卡死,然后就超时了
小弟我做了个QQ群数据库泄漏信息查询,但是代码效率很低,很耗资源,贴出源码请大神改进

我只能一个表一个表的去查,这样的话不会卡死
小弟我做了个QQ群数据库泄漏信息查询,但是代码效率很低,很耗资源,贴出源码请大神改进

这次泄漏的数据库一共大概90G
小弟我做了个QQ群数据库泄漏信息查询,但是代码效率很低,很耗资源,贴出源码请大神改进
作为一个新手纯属技术研究,望高手指点如何提高效率
[解决办法]
QQNum有索引吗?有索引和没有索引,速度应该差5000倍。

热点排行