SqlServer
一、优化
1、索引(单索引、多列非聚集索引)
2、用 charindex 替换 like
3、select top 前几条的时候,尽量不用 Union all,可以的话用or代替
二、SQL使用笔记
1、(sql server 2012后)跳过n条记录取m条记录: order by …… OFFSET n ROWS FETCH NEXT m ROWS ONLY
三、查看系统
1、查看监听端口:exec sys.sp_readerrorlog 0, 1, 'listening'
2、查看服务名、计算机名:
SELECT @@SERVERNAME as '服务名',SERVERPROPERTY('SERVERNAME') as '计算机名'
3、查看索引大小:
SELECT i.name AS IndexName, SUM(s.used_page_count) * 8 AS IndexSizeKB
FROM sys.dm_db_partition_stats AS s
JOIN sys.indexes AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
WHERE i.name = '索引名称'
GROUP BY i.name ORDER BY i.name
4、添加(非聚集/聚集)主键
alter table TableName add primary key clustered--主键且聚集 nonclustered 主键但非聚集
(
columnName ASC
)
四、其他知识
1、【假设当前主机名:host-1,数据库实例名:testSql,端口为:1234】安装SqlServer后,如果要把端口修改为1433,去SqlServer配置管理器把对应实例的TCP/IP监听端口的TCP PORT都改成1433,然后重启SqlServer服务。重启完成后,数据库连接串也从【host-1\testSql,1234】变成【host-1\testSql,1433】。
2、数据库撑爆磁盘解决方案:
- a.右击数据库→任务→收缩,然后收缩文件和数据库,包括对应日志(SqlServer数据库扩充后不会自动释放空余的空间)。
- b.不需要做数据库增量备份(不需要开启CDC)的数据库,右击属性→选项→恢复模式→改成简单,再用a的方式收缩一次日志文件。
- c.右击数据库,选择属性→文件,添加其他磁盘作为备用存储。
- d.分离数据库文件,将文件移动到比较大的磁盘分区,再把文件重新关联数据库。
3、一千万条数据,建立索引时间约为4秒,索引占用空间大小约为200M。(索引字段大小为10)