有用的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;