精华内容
下载资源
问答
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
     

    在 sql server 中,查询 数据库的大小 和 数据库中各表的大小

     

    其实本来只想找一个方法能查询一下 数据库 的大小,没想到这个方法还能查询数据库中 各个数据表 的大小,嗯,挺好玩的,记录一下。

    MSDN资料:https://msdn.microsoft.com/zh-cn/library/ms188776.aspx

    如果只是查询数据库的大小的话,直接使用以下语句即可:

    EXEC sp_spaceused

    为了保证查询结果的实时性,推荐使用 @updateusage 参数来确保统计数据是最新的:

    EXEC sp_spaceused @updateusage = N'TRUE';

    执行完毕后结果是两个表,第一个表中包含了基本的统计信息,第二个表示更加详细的数据占用情况。

    image

    如果想具体查询某个表的大小,加上表名即可:

    EXEC sp_spaceused 'spt_values'

    结果很简单:

    image

    (完)

     

     

    。。。

    其实吧,能查一张表,就想怎么能把数据库里的表都查出来。。。

    嗯,来一个吧,从网上查到的:

    复制代码
    -- =============================================
    -- 描  述:更新查询数据库中各表的大小,结果存储到数据表中
    -- =============================================
    CREATE PROCEDURE [dbo].[sp_UpdateTableSpaceInfo]
    AS
    BEGIN
        --查询是否存在结果存储表
        IF NOT EXISTS (SELECT * FROM sysobjects where id = OBJECT_ID(N'temp_tableSpaceInfo') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
        BEGIN
            --不存在则创建
            CREATE TABLE temp_tableSpaceInfo
            (name NVARCHAR(128), 
            rows char(11), 
            reserved VARCHAR(18),
            data VARCHAR(18),
            index_size VARCHAR(18),
            unused VARCHAR(18))
        END
        --清空数据表
        DELETE FROM temp_tableSpaceInfo
    
        --定义临时变量在遍历时存储表名称
        DECLARE @tablename VARCHAR(255)
    
        --使用游标读取数据库内所有表表名
        DECLARE table_list_cursor CURSOR FOR 
        SELECT name FROM sysobjects 
        WHERE OBJECTPROPERTY(id, N'IsTable') = 1 AND name NOT LIKE N'#%%' ORDER BY name
    
        --打开游标
        OPEN table_list_cursor
        --读取第一条数据
        FETCH NEXT FROM table_list_cursor INTO @tablename 
    
        --遍历查询到的表名
        WHILE @@FETCH_STATUS = 0
        BEGIN
            --检查当前表是否为用户表
            IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(@tablename) AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
            BEGIN
                --当前表则读取其信息插入到表格中
                EXECUTE sp_executesql N'INSERT INTO temp_tableSpaceInfo EXEC sp_spaceused @tbname', N'@tbname varchar(255)', @tbname = @tablename
            END
            --读取下一条数据
            FETCH NEXT FROM table_list_cursor INTO @tablename 
        END
    
        --释放游标
        CLOSE table_list_cursor
        DEALLOCATE table_list_cursor
    END
    
    GO
    复制代码

    用的时候呢,执行一下:

    EXEC sp_UpdateTableSpaceInfo
    SELECT * FROM temp_tableSpaceInfo

    嗯,应该就可以了吧。

    (这次真的完了)

    转载于:https://my.oschina.net/rootliu/blog/2252939

    展开全文
  • 在学校的时候就经常做一些网站,所以这次在公司实习,组长...主要分两个内容:1)SQL Server,Access数据库查询的易混点;2)C#parameter指定参数长度对程序性能的影响 1)SQL Server,Access数据库查询的易混点

    在学校的时候就经常做一些网站,所以这次在公司实习,组长第一次给了一个企业的网站还是很快的完成了。中间并没有遇到什么大的问题,但是还是遇到了两个新手非常容易混淆的小问题,所以拿出来跟大家分享一下。

    主要分两个内容:1)SQL Server,Access数据库查询的易混点;2)C#中parameter指定参数长度对程序性能的影响

    1)SQL Server,Access数据库查询的易混点

    学习SQl的都知道,我们要在数据库中实现模糊查询是要使用Like语句的,同时使用一些通配符来完成对查询内容的模糊匹配。

    第一个通配符就是“%”,只要是完成对任意字符的匹配(在Access数据库中使用“*”);第二个通配符“_”是完成对单个字符的匹配;

    但是在程序中是什么样子呢?

    因为我所做的网站使用的是Access数据库,当我在程序中使用“*”通配符查询数据库时,无论如何在自己创建的DataTable实例化的对象中始终没有数据,刚开始怀疑是DataAdapter中不能使用“Like”这样的命令语句。最终经过测试发现,如果在程序中使用“%”操作符时,就会有数据。

    虽然在Access中使用“*”来完成模糊匹配,但是在C#程序中还是要使用“%”来完成模糊匹配。


    2)C#中parameter指定参数长度对程序性能的影响

    其实我自己也一直有一个疑问就是关于实例化SqlParameter对象,其中我们都会去指明参数,参数类型,还有参数长度(注意很多时候我们都是都省去这一步的)。如下面的实例声明方法:

    1             //显式指定参数长度
    2             SqlParameter parameter1 = new SqlParameter("@home", SqlDbType.NChar, 4);
    3             //不指明参数长度
    4             SqlParameter parameter2 = new SqlParameter("@home", SqlDbType.NChar);

    到底我们指明参数的长度对程序的性能有没有影响呢。

    在微软的MSDN中的解释是“在参数声明时,如果未显式设置,则从指定参数值的实际大小推断出该大小。”

    我们还是写一段小程序,然后使用SQL Server2008自带的SQL Server Profiler来测试观察一下这个过程吧。

    程序代码如下:

    复制代码
     1 public DataTable GetTable()
     2         {
     3             SqlConnection con = new SqlConnection(strConnection);
     4             SqlCommand cmd = new SqlCommand("select * from testsql5 where name=@Name", con);
     5 
     6             //这里两句来测试程序语句获取参数的方法
     7             //SqlParameter parameter = new SqlParameter("@Name", SqlDbType.NVarChar);
     8             SqlParameter parameter = new SqlParameter("@Name", SqlDbType.NVarChar,8);
     9 
    10             parameter.Value = "nijiushi";
    11             cmd.Parameters.Add(parameter);
    12 
    13             SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    14             DataTable dt = new DataTable();
    15             adapter.Fill(dt);
    16 
    17             return dt;
    18 
    19         }
    复制代码

    在程序中,首先执行的是未被注释的代码,在SQL Server Profiler中看到的执行结果如下:

    这个时候因为显式的指明了参数的长度,所以跟踪结果中看到参数的长度nvarchar(8)

    我们再来试试把参数的长度指定的比给定的参数值得长度小。代码如下:

    1  SqlParameter parameter = new SqlParameter("@Name", SqlDbType.NVarChar,6);

    跟踪结果如下:

    我们可以看到的是此时参数的长度已经变成了nvarchar(6),而参数的值也被截断为“nijius”

    那么没有指名参数长度时,程序是通过sqlDbType.NChar知道参数的长度还是通过后面对参数赋值知道参数的长度呢?

    然后我们执行上边的注释的代码,也就是没有指定参数长度的代码,看到的结果如下:

    这时候我们看到测试软件跟踪的结果是一样的,但是可以看到的就是下边的参数长度已经被确定为nvarchar(8)。我们可以试着改变参数的值来看一下。比如我把参数的值改为“nijiu”,再看测试的结果如下:

    由此我们可以知道,程序是通过后面参数的值来得出参数的长度的,而不是通过参数的类型SqlDbType.NVarChar

    那么这样到底对程序有什么影响呢?

    对于参数长度一样的语句在SQl server中会执行相同的执行计划,但是对于不一样的参数长度的话,会生成新的执行计划.所以,当显式的指明参数的长度的时候会加快sql的执行速度.


    如果您觉得不错,点击右下角,分享一下吧!您的支持,是我写作的动力!

    毕业实习交流群:221376964。期待IT老兵加入,工作之余给毕业实习生以思想指导!

    展开全文
  • 相信现阶段依然有许多的企业信息化项目依然采用单体架构,其数据存储主要方式依然以关系型数据库为主,比如oracle、mysql、postgresql等。企业初期,各种原因导致研发人员身兼数职,都是全栈的角色。当然从业务上来...

    相信现阶段依然有许多的企业信息化项目依然采用单体架构,其数据存储主要方式依然以关系型数据库为主,比如oracle、mysql、postgresql等。企业初期,各种原因导致研发人员身兼数职,都是全栈的角色。当然从业务上来说,用户量不大,并发数小,只要实现需求功能就可以了。当系统运行到一定数量级,一定会面临数据库的查询问题。下文从数据库设计和查询简单说说怎么提高查询性能。

    一、数据库设计

    1、使用范式设计合理设计数据库,为了考虑性能,可不用实现全部范式。在实践中使用第一和第二范式即可(具体范式规则可问度娘)。

    2、表字段使用合理的数据类型,尽量不用blob、clob、text等大字段,如必须使用,可增加扩展表,从需求上,这些大字段在列表查询时不用展示,在展示详情时再发起查询即可。对于图片和视频等,只保存路径信息,实际文件保存在文件系统中。

    3、在条件查询字段增加索引,索引是传统模式下,性能提升的利器。在不增加任何硬件的前提下,索引可以大大的提高应用查询效率。

    4、数据库端不做任何外键,在应用端负责外键引用。这里需要注意的是,有A(id),B(id,aid),设计这种表的时候一定要注意关联字段的数据类型必须要一致。A表中id字段是int8,那么B表中aid字段就必须设置为int8,而不能用varchar字段。

    二、查询优化

    1、使用exists替代in。

    开发人员由于不考虑数据查询效率,使用exists可以使用表索引,从而提升效率。当前前提是exists的结果集是一个大结果集。如果目标结果集只是几十条数据,使用in也是可以的。

    2、尽量少用子查询。

    子查询的性能很低,建议使用表连接的方式来优化。

    3、优化or查询。

    实际开发中or查询常见,可以通过union中改变or为两条and语句来提高查询效率。

    4、不滥用多字段like。

    业务方喜欢在前端页面使用一个输入框实现多字段检索。实现方式通常是多字段or加like。这里推荐一种改善方案,在前端把查询字段明确化,去掉一个输入框接收查询参数。如果有技术力量,可以加上搜索引擎,则可以解决这个需求。

    以上从数据库设计和查询两个方面简单阐述了如何提升查询性能。查询优化是一个研发团队的核心竞争力,在初创阶段,业务为王,技术是辅助性的。但是,技术也需要紧紧贴合业务,避免由于技术债务导致业务不能快速发展。应用性能提升之道任重而道远,欢迎交流。

    图片

    展开全文
  • 传统的集中式数据库开始表现出性能瓶颈,分布式数据库的研究与设计应运而生,基于大部分停留在理论层面的研究且关键技术集中在大型互联网公司等情况,所以本文主要针对中小公司采用较多的关系型数据库进行分布式...
  • 在学校的时候就经常做一些网站,所以这次在公司实习,组长第一次给...主要分两个内容:1)SQL Server,Access数据库查询的易混点;2)C#parameter指定参数长度对程序性能的影响 1)SQL Server,Access数据库...

    在学校的时候就经常做一些网站,所以这次在公司实习,组长第一次给了一个企业的网站还是很快的完成了。中间并没有遇到什么大的问题,但是还是遇到了两个新手非常容易混淆的小问题,所以拿出来跟大家分享一下。

    主要分两个内容:1)SQL Server,Access数据库查询的易混点;2)C#中parameter指定参数长度对程序性能的影响

    1)SQL Server,Access数据库查询的易混点

    学习SQl的都知道,我们要在数据库中实现模糊查询是要使用Like语句的,同时使用一些通配符来完成对查询内容的模糊匹配。

    第一个通配符就是“%”,只要是完成对任意字符的匹配(在Access数据库中使用“*”);第二个通配符“_”是完成对单个字符的匹配;

    但是在程序中是什么样子呢?

    因为我所做的网站使用的是Access数据库,当我在程序中使用“*”通配符查询数据库时,无论如何在自己创建的DataTable实例化的对象中始终没有数据,刚开始怀疑是DataAdapter中不能使用“Like”这样的命令语句。最终经过测试发现,如果在程序中使用“%”操作符时,就会有数据。

    虽然在Access中使用“*”来完成模糊匹配,但是在C#程序中还是要使用“%”来完成模糊匹配。


    2)C#中parameter指定参数长度对程序性能的影响

    其实我自己也一直有一个疑问就是关于实例化SqlParameter对象,其中我们都会去指明参数,参数类型,还有参数长度(注意很多时候我们都是都省去这一步的)。如下面的实例声明方法:

    1             //显式指定参数长度
    2             SqlParameter parameter1 = new SqlParameter("@home", SqlDbType.NChar, 4);
    3             //不指明参数长度
    4             SqlParameter parameter2 = new SqlParameter("@home", SqlDbType.NChar);

    到底我们指明参数的长度对程序的性能有没有影响呢。

    在微软的MSDN中的解释是“在参数声明时,如果未显式设置,则从指定参数值的实际大小推断出该大小。”

    我们还是写一段小程序,然后使用SQL Server2008自带的SQL Server Profiler来测试观察一下这个过程吧。

    程序代码如下:

    复制代码
     1 public DataTable GetTable()
     2         {
     3             SqlConnection con = new SqlConnection(strConnection);
     4             SqlCommand cmd = new SqlCommand("select * from testsql5 where name=@Name", con);
     5 
     6             //这里两句来测试程序语句获取参数的方法
     7             //SqlParameter parameter = new SqlParameter("@Name", SqlDbType.NVarChar);
     8             SqlParameter parameter = new SqlParameter("@Name", SqlDbType.NVarChar,8);
     9 
    10             parameter.Value = "nijiushi";
    11             cmd.Parameters.Add(parameter);
    12 
    13             SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    14             DataTable dt = new DataTable();
    15             adapter.Fill(dt);
    16 
    17             return dt;
    18 
    19         }
    复制代码

    在程序中,首先执行的是未被注释的代码,在SQL Server Profiler中看到的执行结果如下:

    这个时候因为显式的指明了参数的长度,所以跟踪结果中看到参数的长度nvarchar(8)

    我们再来试试把参数的长度指定的比给定的参数值得长度小。代码如下:

    1  SqlParameter parameter = new SqlParameter("@Name", SqlDbType.NVarChar,6);

    跟踪结果如下:

    我们可以看到的是此时参数的长度已经变成了nvarchar(6),而参数的值也被截断为“nijius”

    那么没有指名参数长度时,程序是通过sqlDbType.NChar知道参数的长度还是通过后面对参数赋值知道参数的长度呢?

    然后我们执行上边的注释的代码,也就是没有指定参数长度的代码,看到的结果如下:

    这时候我们看到测试软件跟踪的结果是一样的,但是可以看到的就是下边的参数长度已经被确定为nvarchar(8)。我们可以试着改变参数的值来看一下。比如我把参数的值改为“nijiu”,再看测试的结果如下:

    由此我们可以知道,程序是通过后面参数的值来得出参数的长度的,而不是通过参数的类型SqlDbType.NVarChar

    那么这样到底对程序有什么影响呢?

    对于参数长度一样的语句在SQl server中会执行相同的执行计划,但是对于不一样的参数长度的话,会生成新的执行计划.所以,当显式的指明参数的长度的时候会加快sql的执行速度.


    如果您觉得不错,点击右下角,分享一下吧!您的支持,是我写作的动力!

    毕业实习交流群:221376964。期待IT老兵加入,工作之余给毕业实习生以思想指导!

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    转载于:https://www.cnblogs.com/yisuowushinian/p/4715632.html

    展开全文
  • 不然到企业中,容易被一些人鄙视,或者说如果数据库学不好,表查不明白,那么对自己能力来说也是一种侮辱,因为你可以证明自己,你是可以的,尤其是你在面试的时候面对面试官的给你出的一道sql语句题目,你能马上用...
  • 场景模拟: 数据库空间如果太大,对性能方面有一定的影响,所以某知名企业的...如图,下面是运行人员小智用查询语句把数据库的大小写入某个txt文件 第一步:获取数据库大小的数据 。(小智把所有数据库服务器上记录
  • 一款适用于汽车维修行业的管理软件,适合中小企业对维修汽车进行计算机管理。数据库采用 SQL SERVER2000。 主要功能模块包括:职员基本信息、前台客户管理、定损报件单、配件采购单、维修用配件、维修用工时、采购...
  • 调查一个书店的图书销售业务,设计的图书销售系统主要包括进货、退货、统计、销售、查询功能。 ①进货:根据某种书籍的库存量及销售情况确定进货数量,根据供应商报价选择供应商。输出一份进货单并自动修改库存量,...
  • 数据库查询优化技术(摘)

    千次阅读 2006-08-03 14:59:00
    数据库查询优化技术(摘) [日期:2004-10-26] 来源:CSDN 作者: [字体:大 ] 数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行、企业、政府等部门最为重要的...
  • 使用数据库的过程,由于断电或其他原因,有可能导致数据库出现一些错误,比如检索某些表特别慢,查询不到符合条件的数据等.    出现这些情况的原因,往往是因为数据库有些损坏,或索引不完整.    在ACCESS,...
  • 本博客写的是本人课程设计(企业的进销存管理系统)的一个核心功能的主要的代码,涉及数据库的连接与查询,从数据库中取值判断,插入数据同时更新数据库。下面附上功能实现的样例图以及源代码. try { if (sellid...
  • 创建数据库

    2020-03-18 21:07:59
    创建数据库 数据库的文件组成 数据库=数据库文件+日志文件 每个数据库有且只能有一个主数据文件(.mdf),可以拥有任意...--在SQL语言注释使用“--”,SQL代码不区分大写 --创建数据库 CREATE DATABASE NetStud...
  • 【图书目录】 - SQL Server 数据库企业应用系统开发 第1部分 SQL Server Web应用概述 第1章 Web应用程序概述 1. 1 Web应用系统的主要特点 1. 2 Web应用程序的体系结构 1. 3 SQL Server2000与Web...
  • 在所有的数据库注入,只有access数据库的注入是最基础的,因为微软为其定义为小型数据库,所以没有那么多复杂的功能,适用于各种小型企业建站。 常见的select查询 在第一章我们已经讲过了关于sql查询基...
  • Mysql数据库

    2020-12-03 09:42:02
    适用于小型企业。 SQL的组成 DML:数据操作语言,也称为数据操纵语言,用来插入、修改、和删除数据库中的数据。 DDL:数据定义语言,用来建立数据库数据库对象,定义数据表结构等,大部分是以create开头的命令...
  • 数据库资料

    2018-04-01 22:00:33
    主要包含最基础的数据库语句,很适合初学者,目标使用企业管理器创建数据库表设置表的主键、外键和建立表之间的关系为表增加约束数据完整性 数据完整性 数据存放在表 “数据完整性的问题大多是由于设计引起的” ...
  • 数据库介绍

    2014-02-24 17:23:44
    例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表,这张表就可以看成是一个数据库。有了这个"数据仓库"我们就可以根据需要随时查询某职工的...
  • [概述]在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动。因此,如果是双主或者多主,就会增加mysql入口,...
  • Microsoft Office Access是由微软发布的...下面我们结合实例来详细说明,在VC++ MFC,如何使用Access数据库文件进行数据的存储,如何实现对数据库中数据的查询、插入、更新和删除等操作。 (实例可在我的CSDN资源
  • 中小企业信息化生产数据综合管理系统 介绍: 实施中小型生产企业信息化,立足低成本改造宗旨,不片面追求高技术和高度自动化,而是成本低、较为有实效、可持续发展、引入基于“实际应用”的观念、逐步实施和逐步...
  • 企业人事管理系统【SQLServer数据库+课程设计文档】 1.需求分析 1.1 系统目标与要求 1.2 用户需求 1.3 系统业务流程图 2. 系统逻辑方案 2.1 数据流图(简称为DFD) 2.2 数据字典(简称DD) 3. 系统总体结构...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,030
精华内容 412
关键字:

中小企业数据库查询