SQL Server
  • 【Sql Server】使用row_number over方式进行表分页,数据量达到五千多条记录后,查询变慢需要20多秒的解决方案

    前言 最近创建了一张表,用于保存名称相关信息。 刚开始是没有加任何索引,数据不多时查询也没什么问题。 等到了表有5千多条记录后,查询变得很慢,设置需要二十多秒。 一起来看下这个博主是如何解决的?或者你们是否有更好的解决方案呢?也欢迎评论区留言。 单字段查询 刚开始给status字段设置索引,没效果。 直接再给time字段添加索引,有效果,查询秒出。 设置索引是占用一定物理空间大小,所以用物理空间大小还速度 1)单字段索引(适合单个字段排序或查询) 2)多字段索引(适合多个字段排序或查询) 【单字段查询】 -- CREATE INDEX time_index ON 目标表 (time) -- 设置表字段索引 select count(1) from 目标表 select * from ( select row_number() over(order by t.time) as rowindex,t.* from ( select * from 目标表 where status=10 ) t ) new_table where rowindex>((1-1)*10) and rowindex<=1*10; 温馨提示:当你的表数据很多的时候,不建议在可视化工具进行索引设置。可通过sql语句的方式 CREATE INDEX 索引名 ON 目标表 (字段1,字段2.。。) 多字段查询 【多字段查询】 支持模糊查询,字段status和name字段组合索引,查询秒出 where status=10 and name like’%张% select * from ( select row_number() over(order by t.time) as rowindex,t.* from ( select * from 目标表 where status=10 and name like'%张%' ) t ) new_table where rowindex>((1-1)*10) and rowindex<=1*10; 知识点 在 SQL Server 中,ROW_NUMBER() 函数用于为结果集中的每一行分配一个唯一的顺序号。这是一个非常有用的函数,尤其是在分页查询中。以下是有关 ROW_NUMBER() 函数的一些基本说明: 基本语法 ROW_NUMBER() OVER (PARTITION BY partition_expression ORDER BY order_expression) AS row_number 1 P……

    SE_Meng 2024-09-13
    48 0 0
  • SQL Server 查询死锁以及解决死锁的基本知识(图文)

    1. 基本知识 在 SQL Server 中,死锁是指两个或多个进程互相等待对方持有的资源,从而无法继续执行的现象 要解决死锁问题,首先需要识别并分析死锁的发生原因,然后采取相应的措施来预防和处理死锁 识别死锁的常用方法有以下几种: 使用 SQL Server Profiler:可以捕获死锁事件,生成死锁图 使用 Extended Events:更轻量级,适用于生产环境 启用死锁跟踪标志:可以使用 DBCC TRACEON 命令启用死锁跟踪标志(如 1222 或 1204),以记录死锁信息到 SQL Server 错误日志中 -- 启用死锁跟踪标志 DBCC TRACEON (1222, -1); DBCC TRACEON (1204, -1); -- 关闭死锁跟踪标志 DBCC TRACEOFF (1222, -1); DBCC TRACEOFF (1204, -1); 查看系统健康报告:SQL Server 2016 及更高版本提供的系统健康报告可以捕获和记录死锁事件 可以使用以下查询查看当前活动的进程: -- 查看活动的进程 SELECT session_id, blocking_session_id, wait_type, wait_time, wait_resource, last_wait_type, status, command, sql_handle, statement_start_offset, statement_end_offset, plan_handle, database_id, user_id, cpu_time, reads, writes, logical_reads, row_count FROM sys.dm_exec_requests; 截图如下: 杀死特定进程 一旦确定了要终止的会话ID,可以使用以下命令终止该进程: KILL <session_id>; -- 替换为实际的会话ID 2. 查看和解锁被锁的表 查看被锁的表要查看当前被锁的表,可以使用以下查询: SELECT request_session_id AS spid, OBJECT_NAME(resource_associated_entity_id) AS tableName FROM sys.dm_tran_locks WHERE resource_type = 'OBJECT'; 截图如下所示: 解锁被锁表: DECLARE @spid INT; SET @spid = 88; -- 替换为要终止的会话ID DECLARE @sql VARCHAR(1000); SET @sql = 'KILL ' + CAST(@spid AS V……

    SE_Meng 2024-09-10
    17 0 0
  • Navicat Premium 15连接sqlserver报错:未发现数据源名并且未指定默认驱动程序(0)

    Navicat Premium 15连接sqlserver报错:未发现数据源名并且未指定默认驱动程序(0) Navicat Premium 15连接sqlserver数据库提示:未发现数据源名并且未指定默认驱动程序 解决办法: 百度了一下说在安装目录下有个“sqlncli_x64.msi”的文件,安装即可,这个是 Navicat 12 版本和其他版本适用 但是 Navicat 15这个版本里面没有这个文件,换安装目录下msodbcsql_64.msi即可 找到 Navicat 15 安装目录: 双击 msodbcsql_64.msi 选择同意,点击next 在有个 X 符号的选择下拉选择 选择 will be installed on local hard drive ( 将安装在本地硬盘驱动器 ) 选择 will be installed on local hard drive 之后,就不是 X 符号了,就变成正常符号,下一步,Next 点击 Install 点击 Finish , 安装完成 再去 Navicat 15 测试连接 连接成功      

    SE_Meng 2024-09-05
    167 0 0
  • Navicat 连接 SQL Server 详尽指南

    Navicat 是一款功能强大的数据库管理工具,它提供了直观的图形界面,使用户能够轻松地管理和操作各种类型的数据库,包括 SQL Server。本文将详尽介绍如何使用 Navicat 连接到 SQL Server 数据库,包括安装设置、连接配置、常见问题排查及高级功能使用。 第一部分:Navicat 的安装与配置 1.1 下载与安装 Navicat 访问 Navicat 的官方网站下载页面(https://www.navicat.com/download)。 选择适合您操作系统的 Navicat 版本(Windows、macOS 或 Linux)。 下载完成后,运行安装程序并按照提示进行安装。在安装过程中,可以选择安装组件和安装位置。 完成安装后,启动 Navicat。 1.2 配置 Navicat 环境 在首次启动 Navicat 时,软件会询问您是否要创建一个新的连接。如果您已经有一个 SQL Server 实例,可以直接跳过这一步。 导航至“工具”>“选项”,在这里您可以配置 Navicat 的各种设置,如界面语言、默认字体、编辑器偏好等。 确保您的 SQL Server 服务正在运行。如果不运行,请先启动 SQL Server 服务。 第二部分:连接 SQL Server 2.1 创建新的 SQL Server 连接 打开 Navicat,点击主界面上方的“新建连接”按钮或从“连接”菜单中选择“新建连接”。 在弹出的对话框中,选择“SQL Server”作为连接类型。 填写连接信息: 主机名/IP 地址:输入您的 SQL Server 实例的主机名或 IP 地址。 端口:通常 SQL Server 的默认端口是 1433。 用户名:输入具有足够权限访问数据库的用户名。 密码:对应用户的密码。 数据库:选择您要连接的具体数据库。如果不确定,可以留空,连接后在 Navicat 中选择。 连接名称:为连接起一个易于识别的名字,方便后续使用。 点击“确定”保存连接信息,并尝试连接。如果一切设置正确,Navicat 将成功连接到您的 SQL Server 数据库。 2.2 高级连接设置 在“高级”选项卡中,您可以设置更多连……

    SE_Meng 2024-09-04
    107 0 0
  • SQL Server2022版及管理工具SSMS的下载安装教程

    一,下载SQL Server 1.1、百度网盘下载 链接:https://pan.baidu.com/s/1ymXrjzSY1uMke7IDMhJUKw 提取码:8888 1.2、官网下载 链接:SQL Server Downloads | Microsoft 二、安装 如果安装被拦截,请先在安装前需要先将防火墙和带杀毒软件的先退出关闭掉(防止安装不成功) 2.1、选择自定义安装 2.2、更改位置进行安装 2.3、等待安装 三、进行安装配置 当安装好后会弹出一个这样的页面 3.1、选择安装点击全新SQL Server独立安装或向现有安装添加功能 3.2、默认选Developer,进行下一步 如果有产品密钥的可以选择产品密码,之后将下面两个都选上就可以了 3.3、选择接受,进行下一步 3.4、全局规则,下一步 3.5、Microsoft更新,直接下一步 3.6、安装规则,下一步 3.7、适用于SQL Server的Azure扩展 3.8、功能选择 3.9、实例配置 3.10、服务器配置 3.11、数据库引擎配置 1、选择混合模式,设置密码(密码自己设),之后添加当前用户 【账户是指定的是sa】 3.12、功能配置规则 3.13、安装 四、完成 五、安装SSMS 双击SSMS-Setup-CHS 5.1、安装 5.2、正在安装 5.3、已完成 六、打开SQL Server,进行连接 6.1、打开 6.2、进行链接 6.3、成功

    SE_Meng 2024-09-03
    249 0 0
  • centos7.9 安装SqlServer

                                       centos7.9 安装SqlServer   1、导入Microsoft SQL Server CentOS存储库: 2、安装SQL Server: 假如机器内存不足2G 需要对内存限制进行修改 首先切换到 /opt/mssql/bin 目录下 使用notepad++修改配置文件,内存限制由2G改成512M(使用二进制模式打开) 别人建议是Python处理 newfile = oldfile.replace(“\x00\x94\x35\x77”, “\x00\x80\x84\x1e”) 使用notepad++处理 需要安装HEX-editor插件,打开文件后找到00 94 35 77 修改为00 80 84 1e 3、完成SQL Server安装并设置管理员密码: 然后再输入密码等着就行 4、检查SqlServer的启动状态 5、安装SqlServer的命令行工具 下载微软官方的软件包yum源 安装mssql工具包和UnixODBC开发人员软件包(这一步命令会出现两次询问:是否接受许可条款,都输入yes,回车确定 添加PATH环境变量 使用sqlcmd命令连接本地的sqlserver,输入之前设置的SA密码 sqlcmd -S localhost -U sa -p 你的密码 创建数据库脚本 CREATE DATABASE detTest COLLATE Chinese_PRC_CI_AS;

    SE_Zhang 2024-05-31
    90 0 0
  • SQL Server 中,删除表数据有以下几种方式

    在 SQL Server 中,删除表数据有以下几种方式: DELETE 语句:可以使用 DELETE 语句删除表中的一条或多条数据。DELETE 语句不会删除表本身,只会删除表中的数据。示例如下: DELETE FROM tablename WHERE condition; TRUNCATE TABLE 语句:TRUNCATE TABLE 语句会删除表中的所有数据,并且不会记录任何事务日志。因此,它比 DELETE 语句更快,并使用更少的系统和事务日志资源。示例如下: TRUNCATE TABLE tablename; DROP TABLE 语句:DROP TABLE 语句将删除整个表,包括表的结构、索引、触发器等。示例如下: DROP TABLE tablename; 请注意,使用 DELETE 和 TRUNCATE 语句删除表数据后,标识字段(如 ID)可能会被重新使用。这意味着如果你删除了一条数据并重新插入新数据,标识字段的值可能会与已删除的数据重复。而使用 DROP TABLE 语句删除表后,表将彻底从数据库中移除,所有数据和结构都将丢失。因此,在执行这些操作之前,务必备份数据库,并仔细考虑你的需求和后果。

    SE_Zhang 2024-04-19
    43 0 0
  • SQL实现模糊查询的四种方法总结

    一、一般模糊查询 1. 单条件查询 //查询所有姓名包含“张”的记录 select * from student where name like '张' 2. 多条件查询 //查询所有姓名包含“张”,地址包含四川的记录 select * from student where name like '张' and address like '四川' //查询所有姓名包含“张”,或者地址包含四川的记录 select * from student where name like '张' or address like '四川' 二、利用通配符查询 通配符:_ 、% 、[ ]   1. _ 表示任意的单个字符 //查询所有名字姓张,字长两个字的记录 select * from student where name like '张_' //查询所有名字姓张,字长三个字的记录 select * from student where name like '张__' 2. % 表示匹配任意多个任意字符 //查询所有名字姓张,字长不限的记录 select * from student where name like '张%' //查询所有名字姓张,字长两个字的记录 select * from student where name like '张%'and len(name) = 2 3. [ ]表示筛选范围 //查询所有名字姓张,第二个为数字,第三个为燕的记录 select * from student where name like '张[0-9]燕' //查询所有名字姓张,第二个为字母,第三个为燕的记录 select * from student where name like '张[a-z]燕' //查询所有名字姓张,中间为1个字母或1个数字,第三个为燕的名字。字母大小写可以通过约束设定,不区分大小写 select * from student where name like '张[0-9a-z]燕' //查询所有名字姓张,第二个不为数字,第三个为燕的记录 select * from student where name like '张[!0-9]燕' //查询名字除了张开头妹结尾中间是数字的记录 select * from student where name not like '张[0-9]燕' 4. 查询包含通配符的字符串 //查询姓名包含通配符%的记录 select * from student where name like '%[%]%'                //通过[]转义 //查询姓名包……

    SE_Zhang 2024-04-18
    16 0 0