数据库sqlserver2008

编程vs2008,C#

该测试是数据库和程序在一台计算机上,如果不在一台计算机上就不一样了

我的数据库最大链接是127,好像不固定。

一、测试链接对速度的影响

static void RunSql()
        {
            DateTime datetime1 = DateTime.Now;
            for (int i = 0; i < 1000; i++)
            {
                SqlHelper.ExSql();  
            }
            DateTime datetime2 = DateTime.Now;
            string a = (datetime2 - datetime1).TotalMilliseconds.ToString();
            Console.WriteLine(a);
        }

1、初始化,打开,操作,关闭

public static void ExSql()
        {
            conn = new SqlConnection(connstr);
            string sqlstr1 = "INSERT INTO [dbo].[T2]([C2])VALUES('a')";
            SqlCommand cmd1 = new SqlCommand(sqlstr1, conn);
            conn.Open();
            cmd1.ExecuteNonQuery();
            conn.Close();
        }

2、打开,操作,关闭

3、操作

总结:1000个周期,节省了100ms,没多大区别

二、SqlDataAdapter打开前和打开后的状态

1、开始是打开状态

public static void ExSql()
        {
            string sqlstr="SELECT [C1],[C2] FROM [dbo].[T2]";
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter(sqlstr,conn);
            Console.WriteLine(conn.State.ToString());
            DataTable dt=new DataTable();
            da.Fill(dt);
            Console.WriteLine(conn.State.ToString());
            
        }

2、开始是关闭状态

public static void ExSql()
        {
            string sqlstr="SELECT [C1],[C2] FROM [dbo].[T2]";
            conn.Open();
            conn.Close();
            SqlDataAdapter da = new SqlDataAdapter(sqlstr,conn);
            Console.WriteLine(conn.State.ToString());
            DataTable dt=new DataTable();
            da.Fill(dt);
            Console.WriteLine(conn.State.ToString());
            
        }

总结:SqlDataAdapter.Fill()执行后的状态由执行前的状态决定

三、SqlDataAdapter和SqlDataReader的速度

1、SqlDataAdapter

public static void ExSql()
        {
            string sqlstr="SELECT [C1],[C2] FROM [dbo].[T2]";
            DateTime datetime1 = DateTime.Now;
            SqlDataAdapter da = new SqlDataAdapter(sqlstr,conn);          
            DataTable dt=new DataTable();
            da.Fill(dt);
            DateTime datetime2 = DateTime.Now;
            string a = (datetime2 - datetime1).TotalMilliseconds.ToString();
            Console.WriteLine(a);            
        }

2、SqlDataReader填充表

public static void ExSql()
        {
            string sqlstr="SELECT [C1],[C2] FROM [dbo].[T2]";
            DateTime datetime1 = DateTime.Now;
            DataTable dt = new DataTable();
            SqlCommand cmd=new SqlCommand(sqlstr,conn);
            dt.Columns.Add("c1",typeof(int));
            dt.Columns.Add("c2",typeof(string));
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                object[] values = new object[2];
                reader.GetValues(values);
                dt.Rows.Add(values);
            }
            reader.Close();
            DateTime datetime2 = DateTime.Now;
            string a = (datetime2 - datetime1).TotalMilliseconds.ToString();
            Console.WriteLine(a);            
        }

3、SqlDataReader不填充表

public static void ExSql()
        {
            string sqlstr="SELECT [C1],[C2] FROM [dbo].[T2]";
            DateTime datetime1 = DateTime.Now;
            DataTable dt = new DataTable();
            SqlCommand cmd=new SqlCommand(sqlstr,conn);
            dt.Columns.Add("c1",typeof(int));
            dt.Columns.Add("c2",typeof(string));
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                object[] values = new object[2];
                reader.GetValues(values);
               // dt.Rows.Add(values);//去掉该句
            }
            reader.Close();
            DateTime datetime2 = DateTime.Now;
            string a = (datetime2 - datetime1).TotalMilliseconds.ToString();
            Console.WriteLine(a);            
        }

4、SqlDataReader不读取值

public static void ExSql()
        {
            string sqlstr="SELECT [C1],[C2] FROM [dbo].[T2]";
            DateTime datetime1 = DateTime.Now;
            DataTable dt = new DataTable();
            SqlCommand cmd=new SqlCommand(sqlstr,conn);
            dt.Columns.Add("c1",typeof(int));
            dt.Columns.Add("c2",typeof(string));
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                //object[] values = new object[2];//去掉
                //reader.GetValues(values);
               // dt.Rows.Add(values);
            }
            reader.Close();
            DateTime datetime2 = DateTime.Now;
            string a = (datetime2 - datetime1).TotalMilliseconds.ToString();
            Console.WriteLine(a);            
        }

4、SqlDataReader不遍历值

public static void ExSql()
        {
            string sqlstr="SELECT [C1],[C2] FROM [dbo].[T2]";
            DateTime datetime1 = DateTime.Now;
            DataTable dt = new DataTable();
            SqlCommand cmd=new SqlCommand(sqlstr,conn);
            dt.Columns.Add("c1",typeof(int));
            dt.Columns.Add("c2",typeof(string));
            SqlDataReader reader = cmd.ExecuteReader();
            //while (reader.Read())
            //{
            //    //object[] values = new object[2];
            //    //reader.GetValues(values);
            //   // dt.Rows.Add(values);
            //}
            reader.Close();
            DateTime datetime2 = DateTime.Now;
            string a = (datetime2 - datetime1).TotalMilliseconds.ToString();
            Console.WriteLine(a);            
        }

5、SqlDataReader不销毁

public static void ExSql()
        {
            string sqlstr="SELECT [C1],[C2] FROM [dbo].[T2]";
            DateTime datetime1 = DateTime.Now;
            DataTable dt = new DataTable();
            SqlCommand cmd = new SqlCommand(sqlstr, conn);
            dt.Columns.Add("c1",typeof(int));
            dt.Columns.Add("c2",typeof(string));
            SqlDataReader reader = cmd.ExecuteReader();
            //while (reader.Read())
            //{
            //    //object[] values = new object[2];
            //    //reader.GetValues(values);
            //   // dt.Rows.Add(values);
            //}
           
            DateTime datetime2 = DateTime.Now;
            string a = (datetime2 - datetime1).TotalMilliseconds.ToString();
            Console.WriteLine(a);     
            reader.Close(); //该局调换了位置     
        }

总结:还是用SqlDataAdapter好一点,至少语句简单

本地测试Sql的更多相关文章

  1. Oracle本地动态 SQL

    本地动态 SQL 首先我们应该了解什么是动态 SQL,在 Oracle数据库开发 PL/SQL块中我们使用的 SQL 分为:静态 SQL语句和动态 SQL语句.所谓静态 SQL指在 PL/SQL块中使 ...

  2. 用java开发微信公众号:测试公众号与本地测试环境搭建(一)

    本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/5023678.html 俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一 ...

  3. 在本地测试一次成功的AJAX请求

    要在本地测试AJAX,首先是环境的搭建,下面以wamp为例. 1.先在wamp的官网下载wamp的安装包,网址 http://www.wampserver.com/. 2.安装wamp.如果安装过程中 ...

  4. 本地测试AJAX请求

    要在本地测试AJAX,首先是环境的搭建,因为XHR对象的open方法中参数url是指文件在服务器上的文件.下面以WampServer为例. 1. 下载wamp的安装包,下载地址为:http://221 ...

  5. win10系统iis下部署搭建https (ssl/tls)本地测试环境

    有时想要把公司的某些XX项目部署成https站点,是为了在传输层加密传输,防止他人嗅探站点重要数据信息,平常我们使用的http方式都是明文方式传输的很不安全,容易被他人窃取.而有些时候要在本地搭建ht ...

  6. win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)

    原文:http://www.cnblogs.com/naniannayue/archive/2012/11/19/2776948.html 要想成功架设SSL安全站点关键要具备以下几个条件. 1.需要 ...

  7. https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题

    一:什么是https SSL(Security   Socket   Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安 ...

  8. 【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题

    正需要这个,写的很好,就转过来了 转自: http://www.cnblogs.com/naniannayue/ 一:什么是https SSL(Security   Socket   Layer)全称 ...

  9. sqlserver 测试sql语句执行时间

    查看sql语句执行时间/测试sql语句性能 写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了. 通过设置S ...

随机推荐

  1. logrotate

    logrotate程序是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用.可以节省磁盘空间. logrotate命令格式:logrot ...

  2. iperf交叉编译:

    下载:http://sourceforge.net/projects/iperf 1. 先把iperf-2.0.4.tar.gz解压到你的目录下.2. cd iperf-2.0.43. ./confi ...

  3. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  4. Oracle instr

    instr函数 instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置.instr是一个非常好用的字符串处理函数,几乎所有的字符串分隔都用到此函数. 作    用    返回 ...

  5. MySQL int(11)及int(M)解析

    默认创建int类型的字段,SHOW CREATE TABLE table_name或DESC table_name常常可以看到其默认情况为int(11). 这个int(M)很多时候都会被误解为最大范围 ...

  6. 解决Unity3D导出apk失败:Failed to re-package resources

    前几天把系统重装了一下,重新安装Unity3D和Android Studio之后发现过去的文件都不能导出了. 错误信息主要包括: CommandInvokationFailure: Failed to ...

  7. apache域名本地映射

    A: 第一步(搜索allow) 第二步(搜索vhost) 第三步(搜索rewrite) B: C:

  8. mac os 禁止apache httpd自动启动(转)

    mac os 禁止apache httpd自动启动 博客分类: 计算机使用   mac os不像linux有/etc/init.d/rc.local以及service的方式可以设置程序随机启动,而是使 ...

  9. js 不同进制之间相互转换

    如果a进制与b进制都不等于10,则十进制作为桥梁进行转换 例如 10进制的数字11 转换为3进制为102 10进制的数字11 转换为4进制为23 现在进行3进制转4进制 1.3进制转10进制 2.10 ...

  10. Django中的QuerySet查询优化之select_related

    在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然Q ...