sql server 增加索引

SELECT TOP 30 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0) , avg_user_impact , TableName = statement , [EqualityUsage] = equality_columns , [InequalityUsage] = inequality_columns , [Include Cloumns] = included_columns FROM sys.dm_db_missing_index_groups g INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle ORDER BY [Total Cost] … Read more

not in 优化 not exists

–not in 优化 select RIGHT(MATNR,11) as MATNR,QUNTY,PLNMG,ERDAT from (select MATNR,QUNTY,PLNMG,ERDAT from ZZMAST union all select MATNR,QUNTY,PLNMG,ERDAT from ZMANT t1 –where MATNR NOT IN (SELECT MATNR from ZZMAST) where not exists (select t1.MATNR,t1.QUNTY,t1.PLNMG,t1.ERDAT from ZZMAST t2 where t1.MATNR=t2.MATNR) ) as a WHERE ISNUMERIC(MATNR)=1

优化SQL必备

优化SQL必备: SELECT TOP 1000 ST. TEXT AS ‘执行的SQL语句’, QS.execution_count AS ‘执行次数’, QS.total_elapsed_time AS ‘耗时’, QS.total_logical_reads AS ‘逻辑读取次数’, QS.total_logical_writes AS ‘逻辑写入次数’, QS.total_physical_reads AS ‘物理读取次数’, QS.creation_time AS ‘执行时间’ FROM sys.dm_exec_query_stats QS CROSS APPLY sys.dm_exec_sql_text (QS.sql_handle) ST WHERE QS.creation_time BETWEEN ‘2019-10-10 15:00:00.000’ AND ‘2019-10-22 18:00:00.000’ ORDER BY QS.total_elapsed_time DESC;

SQL Server–收缩数据库

(1)自动收缩数据库 选中数据库—>右击—>属性, 在常规这里我们可以看到分配的大小以及可用空间。 选择“选项” 将自动收缩改为true,sqlserver每个一段时间就睡检查剩余空间,如果剩余的空间大于25%,就会自动收缩,这个方法能够防止数据库生成过多的数据库文件而不使用。 (2)手动收缩数据库 选中想要收缩的数据库—>任务—>收缩—>这里有两个选项:收缩数据库和文件。 (3)收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器–右键你要压缩的数据库–所有任务–收缩数据库–收缩文件 –选择日志文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 –选择数据文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 也可以用SQL语句来完成 –收缩数据库 DBCC SHRINKDATABASE(‘dbName’) –收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1)

SQL Server 查询数据库表占用的空间及行数

–查询所有表名 SELECT name, object_id, principal_id, schema_id, parent_object_id, type, type_desc, create_date, modify_date, is_ms_shipped, is_published, is_schema_published, lob_data_space_id, filestream_data_space_id, max_column_id_used, lock_on_bulk_load, uses_ansi_nulls, is_replicated, has_replication_filter, is_merge_published, is_sync_tran_subscribed, has_unchecked_assembly_data, text_in_row_limit, large_value_types_out_of_row FROM sys.tables –查询数据库中所有的表名及行数 SELECT a.name, b.rows FROM sys.sysobjects AS a INNER JOIN sys.sysindexes AS b ON a.id = b.id WHERE (b.indid IN (0, 1)) AND (a.type = ‘u’) ORDER … Read more

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

如果只是查询数据库的大小的话,直接使用以下语句即可: EXEC sp_spaceused 为了保证查询结果的实时性,推荐使用 @updateusage 参数来确保统计数据是最新的: EXEC sp_spaceused @updateusage = N’TRUE’; 执行完毕后结果是两个表,第一个表中包含了基本的统计信息,第二个表示更加详细的数据占用情况。 如果想具体查询某个表的大小,加上表名即可: EXEC sp_spaceused tableName;

sql server视图、嵌套select、with as、isNUll、case when、group by

1、with as 我们想要将查询出来的结果先进行保存,但是在视图总不能创建临时表,所以可以用with – as方式将结果临时保存 2、isNUll(T1.FInterID, 0) 希望在某个字段为空时附上默认值,可以用isNUll,即FInterID为空,设置默认值为0 3、SELECT a.FInterID, ……, b.FCheckTo from……) as T1 这里是将select查询出的结果临时保存为表T1,供下一次嵌套使用 4、……as a left JOIN ICClassMCRecord1070 b ON a.FInterID = b.FBillID…… 将两个表联合起来查询 5、case when sql server的条件查询 6、group by FInterID 以FInterID进行分类