
Sql Server数据库
数据库知识,以及遇到的问题的分享
极客研究者
空余时间喜欢研究、钻研技术,入行不久的一枚菜鸟
展开
-
小表驱动大表
这个在实际开发中非常重要,切记。转载 2023-08-13 13:09:33 · 134 阅读 · 0 评论 -
关于SQL Server索引的最左匹配原则
SQL Server中多表连接时驱动顺序对性能的影响MySQL中的联合索引、覆盖索引及最左匹配原则关于SQL Server索引的最左匹配原则转载 2023-08-13 13:05:44 · 323 阅读 · 0 评论 -
sql server中连表字段类型不匹配导致性能低下
最近项目中,有的模块发现查询性能比较差。经过执行计划调查分析,以及表结构校验.发现即便有。字段相应的索引,某表查询时也会采用索引扫描.经分析关联字段类型不匹配导致查询性能低下。故尝试在T-SQL中强转字段类型。结果性能有飞跃的提高。总结:多表关联时,关联字段类型不匹配,会造成索引丢失。要在where 或or 的字段上对类型转换。原创 2023-08-12 11:09:09 · 343 阅读 · 0 评论 -
sql server中关于FORCESCAN的使用以及注意项
sql server性能优化转载 2022-06-02 12:08:00 · 281 阅读 · 0 评论 -
sql server中移除key lookup书签查找
sql server性能优化转载 2022-06-02 12:03:04 · 328 阅读 · 0 评论 -
Sql Server 中使用临时表优化大表连接查询
最近项目中,有个功能出现点问题,定时任务的excel数据未能发送到客户的email中,经检查原因在于查询超时导致CLR取消了该进程,其中有两张表有近2亿的数据量,而且业务相对比较复杂。将查询一些资料以及和DBA探讨了优化方案,决定先使用临时表试试。本来打算直接切换到clickhouse查询,但时间比较紧急。总结来说就是:1.创建临时表:根据你的大表查询需要的字段建立临时表比如:CREATE TABLE #COMMENT( score varchar(10),转载 2022-05-02 08:51:21 · 1405 阅读 · 0 评论 -
T-SQL中Date、DateTime时间类型数据格式化处理
SQL SERVER 中日期格式化,及GETDATE()、CONVERT()函数使用说明转载 2021-12-05 14:08:45 · 586 阅读 · 0 评论 -
完全彻底的卸载sql server
在腾讯云安装了sql server 2016,没进行使用过。不知什么原因数据库主库所在的目录没了。于是还是想想还是重新安装吧。详细请参考这篇文章:彻底卸载SQL Server详细步骤转载 2021-11-20 21:23:16 · 575 阅读 · 0 评论 -
腾讯云服务器上安装sql server 2016以及开启可远程连接
由于我的操作系统为window server 2019的,和在win上安装没有任何区别。这里就不描述了。配置可进行远程连接:1.首先在本地登录数据库查看,是否允许远程连接到服务器2.sql server 配置管理器:启用tcp/ip协议开放1433端口(SQL服务器上支持TCP/IP协议的是1433端口)3.配置防火墙中允许1433端口支持TCP/IP协议找到防火墙—>高级设置:新建入站规则:指定端口号:最后命名即可.然后重启机器。我按照以上步骤配置完之后还是不行原创 2021-11-14 17:42:45 · 4471 阅读 · 0 评论 -
ROW_NUMBER的使用
ROW_NUMBER的用法转载 2021-11-04 08:47:35 · 556 阅读 · 0 评论 -
在sql server中创建定时Job执行指定的存储过程或者sql语句
call the proc using job in sql server转载 2021-11-02 16:10:57 · 577 阅读 · 0 评论 -
t-sql 中实现循环处理
1.使用游标:DECLARE @profileId AS BIGINT;DECLARE C_ProfileID CURSOR FOR SELECT ID FROM dbo.Profile WHERE status<> 'deleted';OPEN C_ProfileID;FETCH NEXT FROM C_ProfileID INTO @profileId;WHILE @@FETCH_STATUS =0BEGIN UPDATE dayreportItemKeyword原创 2021-10-14 20:50:36 · 772 阅读 · 0 评论 -
t-sql性能调优
在实际的开发中,比较复杂的查询处理,一般还是放在sql中处理。最近在做项目版本中,遇到客户数据量比较大,查询比较慢的情况。于是,开始着手考虑进行性能调优。1.从索引设计的角度考虑业务表的索引的设计,要根据实际业务设计,不要无脑的将聚集索引设计为主键id.关于聚集索引与非聚集的区别:聚集索引与非聚集索引的区别关于索引的那些事复合索引列的顺序的选择:选择性高且数据分布范围比较小的,在前。ix_userbrandid_date 这个索引是userbrandid和dat.原创 2021-09-12 09:06:57 · 340 阅读 · 0 评论 -
Sql Server 读写分离
https://blog.youkuaiyun.com/cxu123321/article/details/103560334https://www.cnblogs.com/echosong/p/3603270.html转载 2021-08-28 17:30:01 · 133 阅读 · 0 评论 -
sql server分区分库分表
应用场景:当数据量足够大,sql server单表超过1000w,并且数据量是不断的递增。相关的文章:深入数据库分区分库分表应用场景水平分区案例表分区案例转载 2021-08-28 17:23:37 · 1031 阅读 · 0 评论 -
EF Core相关的知识和进阶
可查看老杨的博客,写的非常不错。EF Core 系列转载 2021-07-11 15:55:29 · 196 阅读 · 0 评论 -
T-sql中WITH(NOLOCK)的使用场景
SQL Server 中WITH (NOLOCK)浅析转载 2021-07-11 15:51:46 · 274 阅读 · 0 评论 -
C# sql 参数化查询变慢的原因以及解决方案
参数化查询比拼接字符串慢的原因转载 2021-07-11 09:08:52 · 1429 阅读 · 0 评论 -
Select +常量的使用
今天在做项目时,遇到一个需求,需要统计父产品下的所有子产品的数量,且这些子产品有相同的一个字段值,根据这个字段进行group by:解决方案:就是给每个子Product标记数量1我是这样处理的:Select 1 As ProductCount分组时,去求同一组的所有ProductCount之和即可,Sum(ProductCount)这个处理比较灵活.还是那句话,能在sql层处理的,不要拿到内存中处理,尽量从底层处理掉,否则会影响查询的性能。之前sql写的不熟,现在代码量上来后,对以前的处理,最近做了原创 2020-12-14 21:36:32 · 2163 阅读 · 0 评论 -
SQL SERVER微软官方文档
微软英文官方文档原创 2020-10-16 21:58:39 · 1008 阅读 · 0 评论 -
sql server读写分离
读写分离原理实现读写分离–>发布与订阅原创 2020-10-06 12:21:14 · 262 阅读 · 0 评论 -
SQL SERVER分页查询
/// <summary> /// 根据pageSize和pageIndex进行分页查询 /// 查询指定页码的数据 /// </summary> /// <param name="pageSize">每页数据条数</param> /// <param name="pageIndex">当前页码</param> /// <returns></returns>select * from原创 2020-08-16 16:28:52 · 139 阅读 · 0 评论 -
Sql Server中使用非聚集索引
ELECT TOP (1000) [id] ,[name] ,[age] ,[CreatedByUserId] FROM [CRMDB].[dbo].[Person] WITH(INDEX=Nonclustered_UserIdIndex) WHERE CreatedByUserId=20Nonclustered_UserIdIndex为添加的非聚集索引名称对应的执行计划:Index Seek ---- 查询性能非常高...原创 2020-07-11 22:00:48 · 429 阅读 · 0 评论 -
Sql数据精确度问题,保留指定的小数位------时间差
SELECT CAST(AVG(DATEDIFF(DD,CreateOnTime,LastLoginErrorDateTime)*1.00) AS DECIMAL(8,2)) FROM T_AdminUsers原创 2020-07-02 11:43:22 · 907 阅读 · 0 评论 -
配置使用本机IP地址登录SqlServer服务器
今天在写自己的项目时,需要用到使用本机IP地址登录SQLSERVER服务器,于是记录一下。当我们想在本地或者以远程连接的方式去访问其他机器的数据库,可以使用IP地址作为服务器名称,并且以身份验证的方式去登录。如下图:我的数据库版本为SQLSERVER 2017,操作系统为Win101.开始菜单---->SQL SERVER2017文件夹—>配置管理器2.启用Name Pipes和TCP/IP,双击TCP/IP节点,添加本机IP地址获取本机IP地址:cmd控制台: ipc原创 2020-06-20 16:49:11 · 12671 阅读 · 1 评论 -
设计数据库的步骤
1.收集信息:与该系统有关人员进行交流、座谈,充分理解数据库需要完成的任务。2.标识对象(实体-Entity)标识数据库要管理的关键对象或实体3.标识每个实体的属性(Attribute):数据表之间的依赖关系4.标识对象之间的关系(RelationShip):b...原创 2020-04-18 17:58:45 · 234 阅读 · 0 评论 -
SQL SERVER之触发器
触发器:一种对表更改时自动执行SQL代码块的对象,普通的存储过程需要通过EXEC命令来调用存储过程,–触发器则不需要,可以根据事件(插入、更新、删除)自动执行(触发机制)–触发器创建时,会生成两张临时表(DELETED、INSERTED)– FOR:和执行操作同时触发– AFTER:执行之后触发,无约束权限– INSTEAD OF:带约束权限触发器–触发器(带事务):默认是一个...原创 2020-04-18 15:57:25 · 612 阅读 · 0 评论 -
SQL SERVER中的游标的使用
游标:实质是一种能从包括多条数据记录的结果集中每次提取一条记录的机制游标主要是由结果集和游标位置组成的,结果集是SELECT语句执行后返回的,而游标指向返回的结果集的指针。使用DECLARE cursor_name[LOCAL|GLOBAL][FORWARD_ONLY|SCROLL] [STATIC|KEYSET|DYNAMIC|FAST_FORWARD][READ_ONLY|SCROLL...原创 2020-04-18 09:51:33 · 429 阅读 · 0 评论 -
SQL SERVER中的自定义函数
标量函数:返回的结果只是一个标量,就是一种类型的一个值1.创建函数:CREATE FUNCTION Sum( @num1 INT, --定义输入参数 @num2 INT)RETURNS INT --定义返回值类型ASBEGIN --函数体DECLARE @sum INT;SELECT @sum=@num1+@num2;RETURN @sum; --返回函数值E...原创 2020-04-18 09:15:20 · 608 阅读 · 0 评论 -
SQL SERVER中的变量
定义局部变量:仅限于程序内部DECLARE @name VARCHAR(20),@sex VARCHAR(2),@age SMALLINT;SELECT @name='Jackey',@sex='男' --使用SELECT语句为多个局部变量赋值,键值对之间用逗号隔开SET @age='25'PRINT @name+'-->'+@sex+'-->'+CAST(@age AS VA...原创 2020-04-18 08:44:23 · 282 阅读 · 0 评论 -
存储过程
存储过程:是一组为了完成特定功能的SQL数据指令集合存储过程在数据库中经过第一次编译后再次调用时不需要在此编译(预编译)用户只需通过使用存储过程并给定参数即可进行操作预编译后,再次使用直接调用即可。创建简单的存储过程1.查询所有数据CREATE PROC qqUserProc --存储过程名称ASBEGINSELECT * FROM QQUser --执行的操作ENDG...原创 2020-04-18 08:29:10 · 550 阅读 · 0 评论 -
索引
–索引:–作用类似于书籍的目录–在数据查询的时候,SQL SERVER先访问索引,再根据索引信息在数据表中找到相关记录–避免扫描整个数据表,从而有效提升数据检索的速度–比如我在设置主键或者唯一键时,会自动生成唯一聚集索引、唯一非聚集索引–查看索引SELECT name FROM sysindexes ;–添加索引:给指定的表的某个列添加索引–CREATE UNIQUE NONCL...原创 2020-04-17 23:51:48 · 140 阅读 · 0 评论 -
视图
–视图:虚拟表,拥有和真实的数据表一样的行和列–视图是建立在SELECT查询结果和已存在的表中的–应用场景:不同的人关注不同的数据,可以把源数据表拆分成多个视图,把视图供作为数据源可以从不同的视图中获取想要的数据--从视图中查询数据SELECT * FROM view_account;--向视图添加数据INSERT INTO view_account VALUES('100012',...原创 2020-04-17 23:27:54 · 145 阅读 · 0 评论 -
SQL SERVER之事务控制
–事务:一系列SQL操作的逻辑工作单元–四个属性(ACID):原子性、一致性、隔离性、持久性– 原子性:对于事务必须是一个完整的工作单元,事务中对数据的操作要么全部执行,要么全部不执行– 一致性:事务完成时,所有的数据都必须保持一致状态。在相关的数据库中,所有的规则都必须由事务进行修改– **隔离性:**如果多个事务对同一数据进行操作,那么当前事务的操作必须与其它事务进行隔离。–事务在识...原创 2020-04-17 23:15:04 · 427 阅读 · 0 评论 -
临时表
–本地临时表:–生命周期:当前会话期间(执行完关闭当前窗口,表将被释放掉)–只能在当前会话窗口操作(增删改查),不能跨窗口(会话)访问–临时表操作:在内存中操作CREATE TABLE #Student( id INT PRIMARY KEY IDENTITY(1,1) NOT NULL, name VARCHAR(20) NOT NULL, age SMALLINT );IN...原创 2020-04-17 23:04:07 · 133 阅读 · 0 评论 -
子查询与连接查询
如果需要查询的字段列表属于多张表,则使用连接查询(INNER JOIN、LEFT JOIN、RIGHT JOIN)如果需要查询的字段列表属于一张表,但筛选条件跨多张表,可以层层嵌套子查询Demo 01:方式一:DECLARE @stuAge INT;SELECT @stuAge=DATEDIFF(YYYY,birthday,GETDATE()) FROM Students WHERE s...原创 2020-04-17 23:00:47 · 665 阅读 · 0 评论 -
CASE 多分支语句
CASE 多分支语句:–整个执行完会返回一个值,且必须使用变量进行接收–用在某些固定选项的值的选择上–通过SELECT 或者SET语句给某个变量赋值–CASE–WHEN[条件表达式] THEN<一个值>–WHEN[条件表达式] THEN<一个值>–WHEN[条件表达式] THEN<一个值>–ELSE<一个值>–ENDDemo:D...原创 2020-04-17 19:45:01 · 1309 阅读 · 0 评论 -
Exists关键字的使用
Exists关键字的用法:用来检测查询中是否有结果返回。如果有,返回true,否则返回false。由于仅仅判断是否有返回结果,因为查询列表通常为’*’和条件语句一起使用–检测指定数据库是否存在IF EXISTS(SELECT * FROM SYSDATABASES WHERE name='MySchool') DROP DATABASE MySchool...原创 2020-04-17 19:36:24 · 1120 阅读 · 0 评论 -
项目案例(2)--数据的导入
以文件的方式向指定的数据库中导入数据:要导入的数据(存储在txt文本中):Data:灵魂歌手,lh895623,0,15,2018-5-30 15:23:41西湖,xihu8888,1,8,2016-09-13 08:24:15Steps:右键指定的数据库–>任务–>导入数据:浏览按钮 --> 选择导入的文件数据点击列:注意:如果中文出现乱码,改源文件的编码格...原创 2020-04-17 19:28:30 · 293 阅读 · 0 评论 -
项目案例的分析与创建(1)
QQ项目数据库的设计与搭建:1.创建指定名称的数据库:CREATE DATABASE QQDBPro;USE QQDBPro;2.所需的数据表:用户表QQUser:存储用户的基本信息 BaseInfo表:存储用户的个人信息Relation关系表:存储用户之间的关系具体需求说明:基本操作步骤: 创建数据库 -> 创建数据表结构 -> 添加约束 -> 建立...原创 2020-04-17 19:06:14 · 679 阅读 · 0 评论