学习总结:数据库-索引,引擎,SQL语句

【SQL】数据库视图与索引实战演练 目录 一、视图 (1)、创建视图 使用SQL Server Mannagement Studio创建视图 使用SQL语句创建和查看视图 (2)、修改视图 使用SQL Server Management Studio 窗口直接修改视图 使用SQL语句修改视图 (3)、删除视图 使用SQL Server Management Studio 窗口直接删除视图 使用SQL语句删除视图 二、索引文件的创建与删除 (1)、创建索... 阅读详情
  • 数据库中,mysql用到哪些引擎?区别?

InnoDB MyISAM

事务:Innodb支持事务,MyISAM不支持。

索引:Innodb使用聚集索引,MYISAM使用非聚集索引。Innodb不支持全文索引,Myisam支持全文索引,所以查询效率比较高,适合那种增删改不怎么频繁,但是查询频繁的场景。

行数:Innodb不保存表的具体行数,MyISAM保存了表的行数

外键:Innodb支持外键,而MyISAM不支持

 

 

  •  数据库索引及原理

索引是满足某种特定查找算法的数据结构,可以快速的查找数据。

 

  •  常见的索引结构。

二分查找树,B Tree,B+ Tree,Hash

 

  • mysql 索引类别

B-Tree Hash Full-text

 

  • 索引的优点和缺点

优点:可以快速的查找数据

缺点:

1 索引会占用磁盘空间

2 对于需要增删改的操作,索引会降低它们的速度。

 

  • 建立过多的索引有什么负面影响

1 会占用大量的磁盘空间

2 数据库变更也需要维护索引,所以会需要更多的维护成本

 

 

  • 优化数据库的方法,从sql到缓存到cpu到操作系统。

SQL

1 建立索引

2 优化查询语句顺序

3 分表分库

4 选择正确的存储引擎

缓存

1.使用缓存,连接池。

操作系统

1.服务器调优及各个参数设置(调整my.cnf)

 

 

  • sql如何优化

1 建立索引

2 优化查询语句顺序

3 垂直分割分表

4 选择正确的存储引擎

 

 

  •  如何解决慢查询 一个服务有多条SQL怎么快速定位?

1.根据慢日志定位慢查询SQL

2.使用Explain等工具分析SQL,比如说是否使用的是临时表(一般是order by和group by的时候会出现),是否使用的是外部索引排序(一般文件排序的时候会出现)。

3. 修改SQL或者让SQL走索引。

 

 

  • explain会看哪几个参数

key 实际使用的索引

type 查看连接使用了什么类型 一般如果是index 和all 就是比较差的

extra 查看一些额外信息 是否出现filesort或者temporary

 

 

  • .什么情景下做分表,什么情景下做分库

数据库分表可以解决单表海量数据的查询问题,分库可以解决单台数据库的并发访问压力。

 

  • 怎样分表分库?举例说明如何分表?

取模进行路由计算 比如100张表,用户ID为101,取模后就放进第一张表。

 

  • .当数据库访问量过大时,怎么办?分库分表,什么时候垂直拆分,什么时候水平拆分

业务拆分,主从复制,分库分表。

https://blog.youkuaiyun.com/xlgen157387/article/details/53976153 数据库分库分表策略的具体实现方案

 

  • 聚簇索引和非聚簇索引的区别?

聚簇索引的叶子节点就是数据节点,而非聚簇索引的叶子节点还是索引节点,只不过有指向对应数据块的指针。

 

  •  innodb中聚集索引,非聚集索引?myisam中的索引?

Innodb是聚簇索引,myisam是非聚簇索引

 

  • mysql怎么分页,写下命令

limit

  • limit的使用

可以获取前几条或者几条记录

也可以进行分页

 

 

 

  • 什么是最左前缀匹配原则

一条SQL语句,mysql会一直向右匹配直到遇到范围查询(>,<,between,like)就停止匹配。

比如说 a=3 and b=4 and c>5 and d=6 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,但如果建立的是(a,b,d,c)的索引就可以用到,并且abd可以调整顺序。

 

 

  • MySQL的问题,面试官写了一条语句,关键部位".……where a=...and b=... and c=...",给你两个联合索引是a,c和b,c。

问1:说下两个联合索引的使用情况。

问2:select a和select d和select b,c在上述两个联合索引的使用下,查询性能怎样

 

 

  • 建立联合索引a,b,c,请问查询条件为a,c是否使用索引?a,b是否使用索引?b,a,c是否使用索引?

ac不会用

ab会用

bac 如果是= in就可以使用

 

 

  • 数据库索引,分别给abc  a创建索引,select a  索引能用上吗

select abc from table group by a索引能用上吗

能用

能

 

  • 用abc三个列作为索引 select * where b=1 and c=1 如何运行的

没有使用索引

  • 用abc三个列作为索引,where a=1 or group by c会不会走索引

不会

  • 用abc三个列作为索引 select b where c = 1 会不会用到辅助索引,用到怎么样 不用的又怎么样

要建一个辅助索引a

 

  • mysql怎么做到联合索引的

b+树

 

  • 创建索引和使用索引注意事项

1 数据量少的字段不需要加索引,因为建索引有开销

2 需要加索引的字段需要在where条件中

3 建联合索引比建立单个索引更有优势,会节省空间。

 

 

  • 为什么使用索引查数据更快?什么时候使用索引查数据比全表扫描还更慢?使用什么关键字会触发全表扫描?

因为索引就是事先排好序,查找的时候会按照特定的高效率算法。

 

  • 为什么选用自增量作为主键索引

节省空间

如果使用非单调的索引,会造成B+tree频繁分裂调整,降低效率

 

 

  • 哪些情况会引起索引的失效

没有建立索引

遇到or

字符串没有使用引号

遇到匹配范围 如(> < between like)

没有遵循最左前缀匹配原则

mysql预估全表扫描会更快

 

 

  •  b树和b+树的区别

b树下面的节点存储的是数据的指针,而b+树下面节点存储的是数据,这样可以使树矮一点,查询速度更快。

 

  •  hash索引和b树索引的原理,区别,适用场景,优缺点,实现。

b数是下面的节点存储数据的指针,而hash索引是存储每行每列的hash值

访问hash索引数据是比b+tree树快的,但是他只适用一些特殊的场景,有一些缺点。

比如说指那个满足“=”,“in”,不能使用范围查询。

比如不能进行排序

比如不能使用部分索引查找。

还有如果出现hash冲突很多的话,效率也不是很高。

 

  • 怎么用原生的JDBC访问数据库;

加载驱动,然后get connection

 

  • Statement和PreparedStatement的区别

prestatement可以使用占位符

 

  • 数据库的触发器说一下

类型

DML 数据操纵语言 insert delete update 比如说在学生表删除一个学生,成绩表也会删除这个学生的相关信息

DDL 数据定义语言

 

  • left 与inner 区别

left 返回左表中所有记录以及右表中联结字段相等的记录

inner 只返回两个表中联结字段相等的记录

 

 

  • 数据库的三大范式

第一范式 关系中的每个属性值都是不可再分的最小数据单位

第二范式 建立在第一范式的基础上,确保数据表中的每一列都和主键相关

第三范式 建立在第二范式的基础上,确保数据表中的每一列都和主键直接相关

 

 

  • 两种写法实现查询ID在A表但不在B表

select ID from A where ID not in(select ID from B)

 

 

  • 写sql,一张表三个字段,学生sid,课程cid,成绩,查询每一个学生得分最高的那门课

select cid from a

group by sid

order by grade

limit 1

 

  • sql命令  查询平均分在60以上的人 且按序排列

select sid from a

where avg(score)>60

order by avg(score) desc

  • 手写sql输出姓名叫张三,出生日期在1996-1998之间人的平均年龄

select avg(age)

from a

where age in (select age from a where a.name="张三")

 

  • 写SQL语句,只显示重复的数据

select distinct sid form a

 

  • 给一个数据库表,ID、score两个字段分别代表学生ID和成绩,写SQL语句求ID=?的学生排第几名?

select count(1)

from a

group by score having(score > ID.score)

 

 

  • 显示热门评论,按赞数倒序排序,写SQL

select comment from a order by like desc

数据库常用的sql语句汇总 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' ... 阅读详情

相关推荐

只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名

主要介绍了只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名,需要的朋友可以参考下

给一个数据库表,ID、score两个字段分别代表学生ID和成绩,写SQL语句求ID=?的学生排第几名?

CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `score` double NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; 有如下信息 求输出学生id,成绩,以及排名 SELECT ...

AXibaaa的博客 1819

VisionMaster SDK C#二次开发核心技术指南

以下是基于**VisionMaster SDK C#二次开发核心技术指南**,结合实战案例与关键代码解析,帮助开发者快速掌握工业视觉应用集成。

东城十三 3052

2024JAVA互联网各大BATJ大厂(网易、华为、腾讯、阿里)笔经面经(1)

蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。本文已被。

2301_79098686的博客 399

Android中的Service:Binder,Messenger,AIDL(2)

前言前面一篇博文介绍了关于Service的一些基本知识,包括service是什么,怎么创建一个service,创建了一个service之后如何启动它等等。在这一篇博文里有一些需要前一篇铺垫的东西,建议没有看过前一篇博文的同学先去看一下前一篇: Android中的Service:默默的奉献者 (1) 。但是在前一篇博文中也有一些遗漏的东西——主要是关于bindService()这一块的具体细节。由于这

lypeer的专栏 5万+

机器视觉避坑指南:为什么你的Halcon划痕检测总漏检?(附优化方案)

本文深入剖析了Halcon在表面划痕检测中漏检率高的常见原因,如灰度值波动、噪声干扰及形态学参数设置不当。针对复杂背景与低对比度划痕,提出了超越官方例程的多尺度纹理分析与特征融合优化方案,旨在帮助开发者构建更鲁棒、稳定的机器视觉检测流程,有效提升检出率。

weixin_29057163的博客 234

数据库面试题

1.1.     数据库 1.1.1.     数据库【炎黄盈动】 员工表的定义如下: Last_name VARCHAR2(25) First_name VARCHAR2(25) Salary NUMBER(7,2) 现查询显示未达到平均工资的员工姓名.请考察下面的SQL语句: SELECT last_name, first_name FROM employee WHERE sal

小姜姜的专栏 8310

物联网开发笔记(34)- 使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

zhusongziye的博客 1万+

数据库sql语句题目

1、如何将变量count值赋值为1? DECLARE @count SELECT @count=1 @表示声明一个局部变量,@@表示声明一个全局变量(比如已经定义好的系统变量) 申明局部变量语法:declare @变量名 数据类型;例如:declare @num int; 赋值:有两种方法式(@num为变量名,value为值) set @num=value; 或 ...

不远远方 1万+

自举电容的工作原理-3句话总结

1、一道面试题 照例,先抛出来一道面试题:“Buck电路的SW引脚通常会放置一颗小电容,这颗电容有什么用?”。这个问题问得比较细,非常考验被面试者的硬件基本功。 2、似懂非懂的答案 有小伙伴可能不太清楚这颗电容的作用,回答不上来。也有小伙伴脱口而出:自举电容,用来做升压的。但后面好像说不出来具体逻辑。 没具体了解过,答不上来,也没啥可惜的。但是了解过一点,但又似懂非懂的这种,给出的答案只是轻轻点水或者千篇一律,那无疑是错过了一个加分项。 3、异步Buck的自举环路组成 既然是针对Buck电路讲自举电容,前面

ltqdxl的博客 3万+

【系统分析师】2009年真题:综合知识-答案及详解

在某银行业务的用例模型中,“取款”用例需要等到“存款”用例执行之后才能执行,两个用例之间的关系属于(1);“取款”和“存款”两个用例中都需 要执行查询余额的功能,将查询余额提取成独立的用例,那么“取款”和“存款” 用例与“查询余额”用例之间的关系属于(2)。(1)A. 关联关系 B. 扩展关系 C. 使用关系 D. 依赖关系 (2)A. 扩展关系 B. 使用关系 C. 依赖关系 D. 继承关系【参考答案】D、A雇员类含有计算报酬的行为,利用面向对象的(3),可以使得其派生类专职 雇员类和兼职雇员类计算报酬的

数据知道的博客 1万+

【DataBase】索引创建、删除的sql语句

..

m0_64210833的博客 5852

【Simulink教程案例9】基于simulink的BPSK,QPSK调制解调通信系统建模与仿真——使用simulink自带模块设计

BPSK (Binary Phase Shift Keying)-------二进制相移键控。是把模拟信号转换成数据值的转换方式之一,利用偏离相位的复数波浪组合来表现信息键控移相方式。BPSK使用了基准的正弦波和相位反转的波浪,使一方为0,另一方为1,从而可以同时传送接受2值(1比特)的信息。BPSK的映射关系如下所示:BPSK调制过程将输入的1010二进制数据中的0都转化为-1,使得非极性码变为极性码。

FPGA/MATLAB学习教程/源码/项目合作开发 3484

MySQL数据库:SQL语句与索引优化

本文系统介绍了MySQL数据库优化核心要点,重点剖析了SQL查询与索引优化策略。主要内容包括:1)MySQL基础CRUD操作;2)高级查询技巧(联表、子查询、分组统计);3)事务管理ACID特性和隔离级别;4)B+树索引原理及最左前缀匹配原则;5)实战慢查询优化方法,包括EXPLAIN分析、索引添加和覆盖索引应用。文章强调索引"恰到好处"原则,需权衡查询性能与写操作开销,通过持续优化构建高性能MySQL应用。

2503_93373937的博客 2369

机器学习的低代码与无代码平台:便捷入门之路

机器学习领域正涌现出大量低代码和无代码平台,使非技术人员也能轻松应用AI技术。低代码平台(如PyCaret、H2O AutoML)需少量编程但灵活性强,而无代码工具(如Google Cloud AutoML、Teachable Machine)则完全无需编程基础。这些平台覆盖图像识别、文本处理、业务预测等多种场景,适合快速部署简单项目。但专业人士仍需注意,这些工具无法替代复杂场景下的定制化开发。随着技术进步,低门槛AI工具正在改变各行业的创新方式。

2501_90323865的博客 154

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【数据库篇:SQL语句总结、数据库索引、常见面试问题】

最左匹配原则:联合索引(由多个列组成的索引)只能从最左侧的列开始匹配,并且必须连续使用左侧的列,否则索引将无法完全生效。带头大哥不能死,中间兄弟不能断为什么联合索引不符合最左前缀原则就会失效?联合索引在 B+Tree 中的存储方式是按列顺序逐级排序的,先按第一个列 a 排序;先按第一个列 a 排序;a 和 b 都相同的情况下,再按第三个列 c 排序。这种结构使得索引的每一级都依赖前一列的值。如果查询条件不包含最左侧的列,数据库无法通过索引的有序性快速定位数据,只能退化为全表扫描。

m0_56775120的博客 1008

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

openGauss 智能引擎:AI4DB 与 DB4AI 双向融合的自主数据库实践

AI4DB:利用 AI 技术对数据库进行自我调优、自监控、自修复;DB4AI:将 AI 算法嵌入数据库,支持向量存储、模型训练与推理;融合闭环:通过 DBMind 形成“监控—分析—优化—再监控”的自学习系统。openGauss 不仅是一款数据库,更是一套智能计算基础设施,它标志着数据库已从“被管理对象”迈入“自我演化主体”的新时代。

前端小白在前进的博客 7210

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

第3章 SQL数据定义语句

🏙️🌃用[ ]括起来的内容表示是可选的;[,…..n]表示重复前面的内容;用<>括起来表示在实际编写语句时,用相应的内容替代;用{}括起来表示是必选的;类似A|B的格式,表示A和B只能选择一个,不能同时都选。

Wjs153612的博客 2504

优化SQL Server语句查询性能,如何使用数据库引擎优化顾问优化sql查询

sql语句优化,sqlserver语句分析,数据库引擎优化顾问(Database Engine Tuning Advisor,DTA)根据查询优化器中的规则来评估查询,进而提出性能改进建议 如何使用优化顾问?首先一个复杂的sql查询,如果有很多表联查,则要想办法获取到此sql语句,如果是EF框架则需要跟踪生成的sql语句,然后在(SQL Server Management Studio 15.0.18131.0)里面执行此语句,然后...

u011511086的专栏 3567

数据库索引的基本操作(sql语句)

概念: - 索引由表中的一列或多列组合而成,目的是优化数据库的查询速度。 - 向索引表中插入数据时,数据库系统需要按照索引进行排序。有时,可以先将索引删除,然后向表插入数据,最后重新创建索引。 - Mysql索引包括普通索引、唯一性索引、全文索引和空间索引等。(唯一性索引:使用UNIQUE参数可以设置唯一索引,主键 设置一种特殊的唯一索引。)

chensay的博客 4170

MySQL~从引擎选择、表的设计、索引设计、sql语句和连接池这五个方面优化数据库

文章目录引擎选择数据库引擎MYISAM与InnoDB的区别表的设计第一第二第三范式索引优化索引分类索引数据结构索引使用原则sql语句优化 引擎选择 数据库引擎MYISAM与InnoDB的区别 MyISAM是Mysql5之前使用的, 现在大多使用InnoDB MYISAM不支持事务, InnoDB支持事务 MYISAM支持的是表锁, 而InnoDB支持的是行锁, 所以在并发执行的效率上来说InnoDB是好好于MySAM的 MYISAM不支持外键约束, InnoDB支持外键约束, 所以在数据安全性来说Inno

Shangxingya的博客 544

数据库表设计(二):索引规范和SQL语句规范

说明对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表的别名(或表名),并且操作列在多个表中存在,就会抛异常。正例反例如果没加别名限制,在另一个表中增加了一个同名字段线上查询可能会导致1052异常反例某工程师为避免写一个xxx,直接使用HashTable接收数据库返回结果结果由于数据库版本不一样,出现日常把bigint转成Long值,而线上把bigint解析成BigInteger的现象,导致线上出现问题。...

晓风残月淡的博客 4138

gosql实战教程:使用database/sql驱动轻松操作Go数据库

想要在Go项目中快速上手SQL数据库操作吗?gosql是一个用Go语言编写的轻量级PostgreSQL兼容数据库实现,它完美支持Go标准库中的database/sql驱动接口,让数据库操作变得简单高效。无论你是Go语言新手还是经验丰富的开发者,gosql都能为你提供完整的SQL数据库体验。 ## 🚀 gosql是什么? gosql是一个早期但功能完整的PostgreSQL兼容数据库实现,完全

gitblog_01047的博客 1145

SQL语句优化、mysql不走索引的原因、数据库索引的设计原则

17)联合索引 is not null 只要在建立的索引列(不分先后)都会走, in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),或者=一个值;如果索引字段的值很长,最好使用值的前缀来索引。5) 查询条件使用函数在索引列上,或者对索引列进行运算,运算包括(+,-,*,/,!为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。...

Laity 1181

SQL语句创建数据库:全面指南

本文详细介绍了SQL语句创建数据库的各个方面,包括基础语法、数据库对象的创建、完整性约束、触发器以及数据库的备份与恢复等内容。深入理解这些概念和操作,有助于构建和维护高效、可靠的数据库系统。

maohedashu的博客 1133

数据库与表的诞生:MySQL中CREATE DATABASE和CREATE TABLE语句详解

在MySQL中,表是存储数据的核心单元,而语句则是构建这些数据容器的基础工具。通过该语句,我们可以定义表的结构,包括列名、数据类型、约束条件以及存储引擎等关键组成部分。掌握语句的语法和设计原则,是进行高效数据管理的第一步。列定义是表结构的核心,每一列都需要明确指定数据类型,以确保数据的准确存储和高效查询。数值类型:如INT用于整数,DECIMAL用于精确小数。字符串类型:如VARCHAR(n)用于可变长度字符串(n为最大字符数),TEXT用于长文本。日期时间类型:如DATETIME存储日期和时间,

zuiyuelong的博客 1461
上一篇: 学习总结:数据库-事务,连接池
下一篇: 学习总结:集合
scanq
博客等级 码龄11年 15粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值