有用的SQL查询

1 、查询实例中拥有某一字段的所有表

SELECT COLUMN_NAME,TABLE_NAME FROM INFORMATION_SCHEMA.columns WHERE COLUMN_NAME='name'

2、根据表名查询当前数据库中存在的所有表

select * from sysobjects where xtype='U' and name like '%salary%'

 3、一个实例中可能会有多个数据库,有时会忘记当前是针对哪个数据库进行查询,可以用到下面这句

--@@spid是当前用户进程的会话 ID
--用此会话ID在Master..SysProcesses中查得当前用户进程使用的数据库ID
--再用此数据库ID在查得Master..SysDataBases中查到对应的数据库名称
Select Name From Master..SysDataBases Where DbId=(Select Dbid From Master..SysProcesses Where Spid = @@spid)

 4、检查SQL查询效率前先清个缓存

DBCC FREEPROCCACHE;  --删除计划高速缓存中的元素
DBCC DROPCLEANBUFFERS; --清除缓冲区

 5、建立复合索引,索引中两字段前后顺序与查询条件字段在数量一致的情况下,顺序不影响使用索引查询。

      当复合索引中的字段数量与查询条件字段数量不一致情况下,选择性高的排前面(选择性 = 基数/总行数 * 100%)。

6、删除索引

IF EXISTS (SELECT si.name AS IndexName FROM sys.indexes AS si INNER JOIN sys.objects AS so ON si.object_id = so.object_id WHERE so.name = 'DeviceRecords' AND si.name LIKE '%IX_Clubs%')
   DROP index IX_Clubs ON  DeviceRecords

 7、Mysql 查询指定数据库中包含某字段的所有表,排除视图

SELECT DISTINCT TABLE_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME like '%buyer%' AND TABLE_SCHEMA='hk_erp2_oms' AND TABLE_NAME NOT LIKE 'vw%';

 8、C#取sql最小日期

DateTime beginDate = System.Data.SqlTypes.SqlDateTime.MinValue.Value;

 

posted @ 2019-04-25 10:03  张四海  阅读(235)  评论(0编辑  收藏  举报