-
详解sqlserver查询表索引
SELECT 索引名称=a.name ,表名=c.name ,索引字段名=d.name ,索引字段位置=d.colid FROMsysindexesaJOINsysindexkeysbONa.id=b.idANDa.indid=b.indidJOINsysobjectscONb.id=c.idJOINsyscolumnsdONb.id=d.idANDb.colid=d.colidWHEREa.indidNOTIN(0,255)--andc.xtype='U'andc.status>0--查所有用户表ANDc.name='message'--查指定表ORDERBYc.name,a.name,d.name需创建索引例如:根据某列判断是否有重复记录,如果该列为非主键,则创建索引根据经常查询的列,创建索引无须创建索引字段内容大部分一样,例如:男,女不要给所有的列都创建索引,这样在创建新记录时,增加维护开销时间。Oracle查询用户表索引selectindex_name,index_type,table_namefromuser...
数据库操作教程 2022-09-23 17:49:41 -
SQL中distinct的用法(四种示例分析)
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的,所以浪费了我大量时间...
数据库操作教程 2022-09-23 17:49:35 -
谈谈Tempdb对SQLServer性能优化有何影响
先给大家巩固tempdb的基础知识简介:tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象。可以简单理解tempdb是SQLServer的速写板...
数据库操作教程 2022-09-23 17:49:28 -
SQLServer使用row_number分页的实现方法
本文为大家分享了SQLServer使用row_number分页的实现方法,供大家参考,具体内容如下1、首先是selectROW_NUMBER()over(orderbyidasc)as'rowNumber',*fromtable1生成带序号的集合2、再查询该集合的第1 到第5条数据select*from(selectROW_NUMBER()over(orderbyidasc)as'rowNumber',*fromtable1)astempwhererowNumberbetween1and5完整的Sql语句declare@pagesizeint;declare@pageindexint;set@pagesize=3set@pageindex=1;--第一页select*from(selectROW_NUMBER()over(orderbyidasc)as'rowNumber',*fromtable1)astempwhererowNumberbetween(((@pageindex-1)*@pagesize)+1)and(@pageindex*@pagesize)set@page...
数据库操作教程 2022-09-23 17:49:23 -
SQL中Merge用法详解
MERGE语句是SQL语句的一种。在SQLServer、Oracle数据库中可用,MySQL、PostgreSQL中不可用...
数据库操作教程 2022-09-23 17:49:19 -
SQLReportBuilder报表里面的常见问题分析
一SQL报表常常会遇到在表格中的相除,如果分母为零,一般会显示错误号,我们可以这么处理:(加上是A/B)=A/iif(B=0,99999999999999,B)但是我们不能这么写:=iif(B=0,0,A/B) //我们不能这么写,会产生BUG,至于什么BUG,你们可以自己试试二我们假设报表中的某一个格子的名字为A,我们在A中需要引用另一个格子B的值,在这种情况下,我们通常会把B中的计算公式再次引用在A中复制一遍,这样很导致很麻烦。我们可以在A中直接这么写:ReportItems!B表的名字.Value这样就不需要再一次得把公式写一遍了三在报表曲线图中的横坐标,倘若我们需要动态得变化横坐标,我们这时候一般会把轴选项设置为自动,但是这样往往得不到我们想要的结果,下面的例子就是根据参数(开始时间和结束时间)的间隔动态地改变横坐标的样式水平轴属性》数字》自定义=IIf(Parameters!startime.Value=Parameters!endtime.Value,"",iif(DateAdd(DateInterval.day,-4,Parameters!endtime.Val...
数据库操作教程 2022-09-23 17:49:15 -
SqlServer应用之sys.dm_os_waiting_tasks引发的疑问(下)
sys.dm_os_waiting_tasks引发的疑问(下)前面写了两篇了,其实不光是说sys.dm_os_waiting_tasks的应用,研究了挺长时间的并行,自己有了一些理解,所以分享出来希望有什么理解错误的地方大神们及时纠正!! 给出前两篇的连接:SqlServer应用之sys.dm_os_waiting_tasks引发的疑问(上)SqlServer应用之sys.dm_os_waiting_tasks引发的疑问(中)前面两篇的编写有一个疑惑...最初认为的并行比如这个语句: select*fromt1innerjoint2ont1.a=t2.aOPTION(querytraceon8649) 在我的理解并行是开几个线程去获取T1数据,另外几个线程获取T2数据,然后关联结果形成最后结果集。可是试验了才发现自己原来想的和看到的结果不太一样呀!!!! 下面我们用前两篇的例子继续做试验... 这次我们2张表同时给锁住,看看等待里是什么情况...
数据库操作教程 2022-09-23 17:49:13 -
SQL字段拆分优化
今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下:SELECTSO_Order.fdate,SO_Order.fsnFROMso_orderINNERJOINso_orderitemONCHARINDEX(so_Orderitem.fid,SO_Order.fid)>=1WHEREso_order.FOrderDate='2015-09-06'语句不算复杂,只是执行比较慢,下面是关于这SQL语句的一些信息:--1.SQL执行203条数据--2.耗时12秒--3.so_order表的fid字段是字符串集合,--由1-2个字符串组成,用','分隔SELECTCOUNT(*)FROMSO_OrderWHEREso_order.FOrderDate='2015-09-06'--24SELECTCOUNT(*)FROMso_Orderitem--414154 通过分析执行计划,so_order和so_orderitem走嵌套循环是正确的,查询的瓶颈是在so_orderitem的索引扫描上。因此,我们要通过改写SQL,达到so_orderitem走索引查找的目的...
数据库操作教程 2022-09-23 17:49:09 -
SQLServer存储过程中事务的使用方法
本文为大家分享了SQLServer存储过程中事务的使用方法,具体代码如下createprocusp_Stock@GoodsIdint,@Numberint,@StockPricemoney,@SupplierIdint,@EmpIdint,@StockUnitvarchar(50),@StockDatedatetime,@TotalMoneymoney,@ActMoneymoney,@baseIdint,@Descriptionnvarchar(255)asdeclare@errorint=0--事务中操作的错误记录--开启事务begintransaction--实现进货信息的添加insertintoStockInfovalues(@GoodsId,@Number,@StockPrice,@SupplierId,@EmpId,@StockUnit,@StockDate,@TotalMoney,@ActMoney,DEFAULT,@Description,@baseId)set@error+=@@ERROR--记录有可能产生的错误号--获取当前进货信息的标识列--判断当前商品有没有进货记...
数据库操作教程 2022-09-23 17:49:02 -
详解SQLServer和Oracle的分页查询
不管是DRP中的分页查询代码的实现还是面试题中看到的关于分页查询的考察,都给我一个提示:分页查询是重要的。当数据量大的时候是必须考虑的...
数据库操作教程 2022-09-23 17:48:59 -
SQL中位数函数实例
表还是total_sales添加一项表:SQL语句:复制代码代码如下:SELECT*from( SELECTa1.Name,a1.Sales,COUNT(a2.sales)Sales_Rank FROMTotal_Salesa1,Total_Salesa2 WHEREa1.Sales<a2.Salesor(a1.Sales=a2.Salesanda1.Name=a2.Name) GROUPBYa1.Name,a1.Sales ORDERBYa1.SalesDESC,a1.NameDESC)astabWHEREtab.sales_rank=(select(count(*)+1)div2fromtotal_sales);可以查找到中间的项,count(*)+1,这个1必须要添加,总项数假如为奇数7,则count(*)+1/2=4,假如是6则为3,都是满足的,如果不+1的话,对奇数项则不满足,如7,count(*)/2...
数据库操作教程 2022-09-23 17:48:56 -
恢复sqlserver2000误删数据的解决办法
今天不小心把客户那边的数据库中删了一千多条数据,而且之前又没有备份,真的是很郁闷,后来在网上找到一工具,用起来挺方便,让我躲过一劫。首先来看一下界面:输入服务器地址,用户名及密码后点Connect,进入到下面的界面:在这里选择要恢复数据的数据库,选择UseOn-lineLog(如果你又备份文件的话就不需要用这个工具了,直接用SQL搞定了)...
数据库操作教程 2022-09-23 17:48:53