当前位置:首页>面试真题>数据库核心原理面试真题(一)

数据库核心原理面试真题(一)

  • 2026-03-03 04:55:41
数据库核心原理面试真题(一)

点击蓝字 关注我们

♥ ♥ ♥

Q

什么是CSV表?

A

CSV 表并非传统数据库中带结构化约束的表,而是以逗号分隔值(CSV)格式存储数据的文本文件形式的 “表”,是一种通用的轻量级数据存储与交换格式。

具体而言,CSV 表本质是纯文本文件,文件内每行代表一条数据记录,记录中的不同字段通过逗号分隔,它没有数据库表的主键、外键、数据类型等结构化约束,仅以简单的文本形式组织数据,可被各类数据库、办公软件、编程工具兼容读写;在运维工作中,CSV 表常被用于数据库数据的批量导出 / 导入、临时数据整理、跨系统数据交互等场景,是数据库与外部系统传递数据的常用载体。

综上,CSV 表核心是基于逗号分隔值的文本型数据表,以轻量化、无强结构约束、通用性强为特点,是运维中数据库数据交互的重要形式。

Q

如何创建一个使用GBK字符集的数据库,并查看已建库的完整语句?

A

在主流的关系型数据库(以 MySQL 为例)中,创建使用 GBK 字符集的数据库需通过指定字符集参数的 CREATE DATABASE 语句实现,而查看已建库的完整创建语句则可借助 SHOW CREATE DATABASE 命令完成,这是运维中配置和验证数据库字符集的基础操作。

具体来说,创建 GBK 字符集数据库的核心语句为:CREATE DATABASE 自定义数据库名 DEFAULT CHARACTER SET gbk DEFAULT COLLATE gbk_chinese_ci;。其中 “DEFAULT CHARACTER SET gbk” 明确将数据库默认字符集设定为 GBK,适配中文数据存储;“DEFAULT COLLATE gbk_chinese_ci” 指定 GBK 字符集对应的中文校对规则,保证字符排序和比较符合中文语境,执行该语句前需确保具备数据库创建权限。查看已建库完整语句时,执行 SHOW CREATE DATABASE 目标数据库名;命令即可,该命令会返回包含字符集、校对规则等所有配置的完整创建 SQL,能直观验证数据库字符集配置是否符合预期。

综上,创建 GBK 字符集数据库的关键是在创建语句中明确指定 GBK 字符集及对应校对规则,查看完整创建语句则通过 SHOW CREATE DATABASE 命令实现,二者结合可完成数据库字符集的配置与验证,满足中文业务的数据存储需求。

Q

解释有关数据库的ACID是什么意思

A

ACID 是数据库事务必须满足的四大核心特性,是保障数据库事务可靠执行、数据准确一致的基础准则,也是数据库事务机制的核心理论。

原子性指事务是不可拆分的最小执行单元,事务内的所有操作要么全部执行成功,要么全部执行失败回滚,不会出现仅执行部分操作的中间状态,确保数据操作的完整性。一致性要求事务执行前后,数据库的所有完整性约束都不会被破坏,数据始终符合业务规则和逻辑规范,保证数据状态合法有效。隔离性是多个并发事务同时运行时,彼此之间相互独立、互不干扰,避免出现脏读、不可重复读、幻读等并发数据异常问题。持久性表示事务一旦成功提交,对数据的修改就会永久存储在数据库中,即便系统发生故障重启,已提交的数据也不会丢失。

总而言之,原子性保证操作不中断,一致性保证数据不违规,隔离性保证并发不冲突,持久性保证结果不丢失,四大特性共同支撑数据库事务稳定可靠运行,是关系型数据库的核心设计原则。

Q

简述什么是数据库的映射

A

数据库映射是数据在不同层级、对象或存储结构间建立对应关系的核心机制,用于实现数据的关联、转换与交互。

在实际应用中,最常见的是对象关系映射,也就是 ORM,它将程序里的面向对象实体与数据库的表、字段、主键外键一一对应,让开发者通过操作对象实现数据读写,无需编写大量原生 SQL。数据库内部还存在逻辑与物理存储的映射,把逻辑上的表、字段对应到磁盘的物理文件和数据块,完成数据的实际存储与读取。同时表与表之间通过主键、外键形成一对多、多对多等关联映射,支撑数据的关联查询与业务逻辑实现。

总而言之,数据库映射的核心是建立数据对应关系,既简化了应用与数据库的交互,也规范了数据存储和关联,是数据库高效运作的重要基础。

Q

怎样创建索引?索引的使用原则、优点和缺点分别是什么

A

索引是数据库提升数据查询效率的核心数据结构,创建索引需通过专用 SQL 语句实现,其使用有明确的适配原则,同时兼具提升查询性能的优点和增加写入开销的缺点,是数据库性能优化的核心手段。

具体来说,创建索引分两种常见场景:

一是创建数据表时同步创建索引,以 MySQL 为例,语句为 CREATE TABLE 表名 (字段 1 类型,字段 2 类型,INDEX 索引名 (字段名)); 若需创建唯一索引,可将 INDEX 替换为 UNIQUE;

二是数据表已创建后新增索引,语句为 CREATE [UNIQUE/FULLTEXT] INDEX 索引名 ON 表名 (字段名); 其中 FULLTEXT 适用于文本内容的全文检索。索引的使用原则需把握核心:优先为查询频繁的字段(如 WHERE、JOIN 条件字段)、数据区分度高的字段(如身份证号)创建索引;避免为更新频繁的字段(如订单状态)、数据量极小的表、重复值高的字段(如性别)创建索引,且复合索引需遵循最左匹配原则,同时杜绝过度创建索引。

索引的优点集中在查询优化:大幅降低数据库扫描的数据量,显著提升单表查询、关联查询效率,优化排序、分组操作的性能;

缺点则体现在写入和存储层面:增加 INSERT、UPDATE、DELETE 操作的开销(需同步更新索引结构),占用额外磁盘存储空间,过度索引还会增加数据库优化器选择执行计划的成本。

总而言之,创建索引需根据业务场景选择合适的语句和索引类型,遵循 “按需创建、宁缺毋滥” 的核心原则,合理利用其查询提速的优势,同时规避对数据写入和存储的负面影响,才能最大化发挥索引的性能优化价值。

总结

1、创建索引分建表时同步创建和建表后新增两种方式,核心语句为 CREATE INDEX 相关语法,可指定索引类型;

2、索引使用需聚焦查询高频、区分度高的字段,避开更新频繁、低区分度的字段,遵循最左匹配原则;

3、索引优点是提升查询效率,缺点是增加写入开销和存储占用,需平衡使用。

Q

简述怎样创建一个视图?试图的应用优势是什么

A

视图是数据库基于SELECT查询语句构建的虚拟表,创建视图需通过专用SQL语句封装查询逻辑实现,其核心优势在于简化数据访问、提升数据安全性与查询逻辑复用,是优化数据库数据使用方式的重要工具。

具体来说,以主流的MySQL数据库为例,创建视图的核心语句为CREATE VIEW 视图名称 AS SELECT 查询语句;,创建时需确保具备视图创建权限,且基础SELECT语句合法有效;若需限制通过视图修改数据的范围,可添加WITH CHECK OPTION参数,例如CREATE VIEW v_order_info AS SELECT order_id, user_name, amount FROM orders WHERE create_time > '2026-01-01' WITH CHECK OPTION;,即可创建仅展示2026年1月后订单核心信息的视图。视图的应用优势主要体现在三方面:一是简化复杂查询,将多表关联、多条件过滤等复杂SQL逻辑封装在视图中,业务端只需查询视图即可获取目标数据,无需重复编写复杂语句;二是保障数据安全,可通过视图仅暴露业务所需字段,隐藏原始表中的敏感数据(如身份证、手机号等),限制用户对底层数据的访问范围;三是实现逻辑复用与一致性,相同的查询逻辑封装为视图后,可被多个业务场景复用,避免因SQL编写差异导致的数据结果不一致问题。

总而言之,创建视图的核心是通过CREATE VIEW语句将查询逻辑封装为虚拟表,其核心优势在于简化查询操作、保护敏感数据、实现查询逻辑的统一复用,能有效降低数据库使用成本,提升数据访问的安全性和效率。

总结

1. 创建视图的核心语法为CREATE VIEW 视图名 AS SELECT 查询语句,可按需添加WITH CHECK OPTION等参数;

2. 视图的核心优势是简化复杂查询、保障数据安全、实现查询逻辑复用与一致性;

3. 视图作为虚拟表,不存储实际数据,仅封装查询逻辑,能提升数据访问的便捷性与安全性。

Q

视图的更新操作有哪些限制?

A

视图的更新操作(INSERT、UPDATE、DELETE)受其底层查询逻辑和数据库规则的严格约束,核心限制源于视图作为虚拟表的特性——其更新最终需映射到底层基表,因此基表关联、字段计算等逻辑都会制约更新操作的可行性。

具体来说,视图更新的核心限制体现在多个方面:其一,包含聚合函数(SUM、COUNT、AVG等)、DISTINCT关键字、GROUP BY/HAVING子句的视图无法更新,这类视图的结果是聚合或分组后的虚拟数据,无法反向映射到基表的单行数据;其二,多表关联查询创建的视图,更新操作通常仅能作用于其中一个基表,且需保证更新字段仅归属该基表,部分数据库甚至直接禁止多表视图的更新;其三,视图中包含计算字段(如字段A+字段B、CONCAT(字段1,字段2))时,该计算字段无法直接更新,因为计算结果无对应的基表原始字段;其四,使用子查询、UNION/UNION ALL组合的视图,因数据来源复杂,无法实现更新操作;其五,视图定义中若包含WITH CHECK OPTION参数,更新操作需满足视图的WHERE过滤条件,否则会被数据库拒绝;其六,基表中被视图引用的字段若有非空、外键等约束,视图更新时需遵守这些约束,否则更新失败。

总而言之,视图更新的限制本质是更新操作需能唯一映射到底层基表的单行记录,凡是破坏这一映射关系的视图逻辑(聚合、多表关联、计算字段等),都会成为更新操作的约束,实际运维中需根据视图的创建逻辑判断其可更新性,避免操作失败。

总结

1. 视图更新的核心约束是更新操作需能映射到底层基表的单行记录,聚合、分组、多表关联等逻辑会破坏该映射;

2. 计算字段、子查询、UNION组合的视图无法更新,带WITH CHECK OPTION的视图需满足过滤条件才能更新;

3. 视图更新还需遵守基表的字段约束(非空、外键等),否则操作会被拒绝。

Q

数据库的主键有几种

A

数据库主键按核心构成形式主要分为两大类,核心划分依据是充当主键的字段数量,不同类型的主键均需满足“唯一且非空”的核心特性,用于唯一标识表中每条记录,适配不同的业务数据标识场景。

具体来说,第一类是单字段主键(也叫单一主键),由表内单个字段承担主键职责,该字段的值需具备唯一性且非空,是日常运维中最常用的主键类型。比如用户表的`user_id`字段、商品表的`goods_id`字段,只需单个字段就能唯一区分每条记录,适配绝大多数基础业务表的主键需求。第二类是复合主键(也叫联合主键),由表内多个字段组合而成,组合后的字段值整体满足唯一且非空的要求,仅适用于单个字段无法唯一标识记录的场景。比如订单详情表,单靠`order_id`(订单号)或`product_id`(商品号)都无法唯一标识一条记录,需将两者组合作为复合主键,确保每条订单详情记录的唯一性。此外,按主键值的生成方式还可细分出自增主键(如MySQL的AUTO_INCREMENT)、UUID主键、自然主键(如身份证号)等,但这属于主键的实现形式,并非数据库层面的核心分类,核心分类仍以字段数量为依据。

总而言之,数据库主键的核心分类为单字段主键和复合主键两类,前者适配单字段即可唯一标识记录的常规场景,后者适配多字段组合才能唯一标识的特殊场景,无论哪种类型,都需遵循“唯一、非空”的主键核心规则。

总结

1. 数据库主键核心分为单字段主键和复合主键两类,划分依据是充当主键的字段数量;

2. 单字段主键是最常用类型,复合主键仅适用于单字段无法唯一标识记录的场景;

3. 自增、UUID等是主键的生成方式,并非核心分类,所有主键均需满足“唯一且非空”特性。

Q

绑定变量是什么?绑定变量有什么优缺点

A

绑定变量是数据库中一种参数化的SQL查询技术,核心是将SQL语句中的具体数值替换为占位符,执行时再动态传入实际值,以此避免数据库重复解析相同结构的SQL语句,是优化高并发场景下数据库性能的核心手段。

具体来说,绑定变量的本质是分离SQL语句的结构与数据:常规SQL如`SELECT * FROM orders WHERE order_id=123`,若频繁修改order_id的值(如124、125),数据库会对每条SQL重新解析、生成执行计划;而绑定变量形式为`SELECT * FROM orders WHERE order_id=:id`(Oracle)或`SELECT * FROM orders WHERE order_id=?`(MySQL),`:id`/`?`是占位符,SQL结构固定,数据库仅需解析一次执行计划,后续传入不同order_id值时直接复用。其优点主要有三方面:一是大幅减少SQL硬解析次数,降低数据库CPU开销,提升高并发场景下的响应效率;二是避免大量结构相同仅值不同的SQL占用共享池内存,节省数据库资源;三是参数化查询隔离了SQL逻辑与输入数据,能有效降低SQL注入的风险。而缺点也较为明确:一是执行计划复用可能导致优化器选择非最优计划(如数据分布不均时,固定执行计划无法适配不同值的查询需求);二是简单查询场景下,绑定变量的解析优化收益抵不上参数传递的微小开销,反而可能略微降低性能;三是部分数据库对绑定变量的支持需额外配置,或在特定场景下存在兼容问题。

总而言之,绑定变量是通过占位符实现SQL参数化的优化技术,核心优势是降低解析开销、节省内存、提升安全性,核心劣势是可能产生非最优执行计划,且简单场景下收益有限,需结合业务查询特征合理使用。

总结

1. 绑定变量是将SQL中具体值替换为占位符的参数化查询技术,核心是复用执行计划;

2. 优点为减少SQL解析开销、节省内存、降低SQL注入风险,缺点是可能导致非最优执行计划;

3. 绑定变量适配高并发、重复结构的查询场景,简单查询场景下无需强制使用。

Q

解释数据库事务概念

A

数据库事务是数据库执行操作的逻辑单元,是一组不可分割的SQL操作集合,遵循ACID核心特性,核心作用是保证多步数据操作的一致性和可靠性,是数据库处理并发、应对异常的核心机制。

具体来说,事务将多个连续的SQL操作(如INSERT、UPDATE、DELETE等数据修改操作)封装为一个整体,这个整体具备“要么全成、要么全败”的特征:若所有操作都执行成功,事务会通过COMMIT(提交)将修改永久写入数据库;若任意一步操作失败或触发回滚指令,事务会通过ROLLBACK(回滚)撤销所有已执行的操作,恢复到事务执行前的数据状态,不存在仅执行部分操作的中间状态。事务的触发分为两种形式:显式事务需手动通过BEGIN/START TRANSACTION开启,再通过COMMIT/ROLLBACK控制提交或回滚;隐式事务由数据库自动触发,比如单条DML语句(数据操纵语句)默认作为单个事务执行。事务的核心价值在于应对系统异常(如断电、网络故障)或业务逻辑错误时,确保数据库数据始终处于合法、一致的状态,例如转账业务中,扣款和加款两个操作必须封装在一个事务中,避免出现一方扣款成功、另一方未加款的资金异常。

总而言之,数据库事务是封装多步SQL操作的逻辑单元,以ACID特性为保障,通过原子性执行和统一的提交/回滚机制,确保数据操作的完整性和一致性,是关系型数据库保障数据可靠性的核心基础。

总结

1. 数据库事务是不可分割的SQL操作集合,核心特征是“要么全部执行成功,要么全部回滚”;

2. 事务分显式(手动控制)和隐式(数据库自动触发)两种形式,遵循ACID特性;

3. 事务的核心价值是保障数据在异常场景下的一致性和可靠性。

Q

简述DBMS有哪些类型

A

DBMS即数据库管理系统,根据数据的存储结构、组织方式和应用场景,可划分为多种主流类型,是数据库运维与选型的基础认知。

关系型DBMS是目前应用最广泛的类型,采用二维表结构存储数据,支持标准SQL、事务与ACID特性,适合结构化数据和强一致性业务场景。非关系型DBMS也叫NoSQL,主要包含键值型、文档型、列存储、图数据库等,结构灵活、扩展性强,专门适配非结构化、半结构化数据与高并发场景。层次型DBMS以树形结构组织数据,是早期数据库类型,层级关系明确但扩展性较差。网状型DBMS采用网状结构描述数据关联,可支持多对多数据关系,复杂度高现在已很少使用。面向对象型DBMS将数据以对象形式存储,能直接对接面向对象编程,多用于特定专业业务场景。

总而言之,DBMS主要分为关系型、非关系型、层次型、网状型和面向对象型五类,其中关系型与非关系型是当前主流,不同类型适配不同的数据特征与业务需求。

Q

阐述什么是Trigger

A

Trigger即数据库触发器,是数据库中与数据表绑定的特殊存储过程,由预设的数据库事件自动触发执行,无需人工主动调用,核心作用是实现数据操作的自动化管控与业务规则的强制约束。

具体来说,触发器的核心特征体现在触发条件与执行逻辑两方面:触发条件聚焦数据库事件,最常用的是DML(数据操纵语言)事件,即INSERT、UPDATE、DELETE操作,此外也可响应DDL(数据定义语言)事件(如CREATE、ALTER)或数据库级事件(如服务器启停);执行时机分为BEFORE(数据操作执行前)和AFTER(数据操作执行后)两类,例如在用户表创建BEFORE UPDATE触发器,可在修改手机号前校验格式合法性,不合法则阻断更新;在订单表创建AFTER INSERT触发器,可在新增订单后自动更新商品表的库存字段。触发器的逻辑封装在数据库底层,能自动监控数据操作,实现数据完整性校验、业务逻辑自动化、操作审计等需求,但过度创建触发器会增加数据库执行开销,甚至引发递归触发(如触发器操作又触发自身)的问题,需谨慎设计。

总而言之,数据库触发器是由特定数据事件驱动的自动化存储过程,核心价值在于强制落实业务规则、自动化管控数据操作,运维中需结合业务场景合理设计,平衡功能需求与数据库性能。

总结

1. Trigger(触发器)是绑定数据表、由预设数据库事件自动触发的特殊存储过程,无需手动调用;

2. 核心触发事件为DML操作(INSERT/UPDATE/DELETE),执行时机分BEFORE/AFTER,可实现数据校验、逻辑自动化等;

3. 触发器需合理使用,避免过度创建导致数据库性能损耗或递归触发风险。

Q

阐述Properties属性是什么

A

Properties属性并非数据库原生核心概念,而是软件开发与运维领域中,用于管理数据库配置、组件参数的键值对(Key-Value)形式的属性集合,常以.properties文本文件或内存中的属性对象存在,核心作用是解耦数据库配置与业务代码,简化运维阶段的参数调整。

具体来说,Properties属性的核心特征与数据库场景下的应用可分为三方面:其一,存储形式上,它以纯文本为载体,采用“键=值”的极简格式,键和值均为字符串类型,支持以#开头添加注释,例如“db.url=jdbc:mysql://localhost:3306/test”“db.username=root”,运维人员可直接编辑文件修改配置,无需改动代码;其二,核心用途上,它是数据库连接与组件配置的核心载体,如JDBC连接数据库、数据库连接池(HikariCP、Druid)、ORM框架(MyBatis)等,均通过Properties管理连接地址、账号密码、连接池大小、超时时间等关键参数;其三,使用优势上,它实现了配置与代码的分离,在运维过程中,调整数据库地址、账号权限、连接池参数等操作,仅需修改.properties文件并重启应用即可,无需重新编译代码,同时该格式跨平台、易解析,是数据库配置管理的通用方式。需注意的是,Properties文件中存储的数据库账号密码等敏感信息,需做好文件权限管控(如仅允许运维用户读取),避免信息泄露。

总而言之,Properties属性是键值对形式的配置集合,在数据库运维中核心用于管理连接参数、组件配置等,其核心价值是解耦配置与代码、简化参数调整流程,同时需重视敏感配置的安全管控。

总结

1. Properties属性是键值对形式的配置集合,以“键=值”纯文本格式存储,是数据库配置管理的通用方式;

2. 核心用途是管理数据库连接地址、账号密码、连接池参数等,实现配置与代码解耦;

3. 使用时需做好敏感信息的权限管控,避免数据库账号密码泄露。

Q

阐述什么是Cursor

A

Cursor即数据库游标,是数据库中用于逐行处理查询结果集的特殊对象,核心作用是打破SQL语句“批量处理数据”的固有特性,实现对查询结果集的精细化、逐行读取与操作,是处理大数据集或需逐行校验/修改场景的关键工具。

具体来说,游标本质是指向查询结果集的“指针”,其使用遵循完整的生命周期:首先通过DECLARE语句声明游标,并绑定待执行的查询SQL(如MySQL中DECLARE cur_orders CURSOR FOR SELECT order_id, amount FROM orders WHERE create_time > '2026-01-01');接着通过OPEN语句打开游标,数据库执行绑定的SQL并生成结果集,游标指针会指向结果集的起始位置;之后通过FETCH语句逐行读取结果集数据(如FETCH NEXT FROM cur_orders INTO @o_id, @o_amount),指针会随读取操作向后移动,直至结果集末尾;数据处理完成后,需通过CLOSE语句关闭游标,释放结果集占用的数据库资源;最后通过DEALLOCATE(不同数据库语法略有差异)语句彻底释放游标对象本身。游标还可按特性分类:静态游标(结果集创建后固定,不随底层数据变化)、动态游标(结果集实时反映底层数据修改)、只进游标(仅能从前往后逐行读取,无法回滚指针)等,不同类型适配不同业务场景。需要注意的是,游标逐行处理的特性使其性能远低于SQL批量操作,大量使用会占用数据库内存、增加CPU开销,仅适用于无法通过批量SQL完成的精细化处理场景(如逐行校验订单金额合法性、逐行生成唯一业务流水号),运维中需避免滥用。

总而言之,数据库游标是实现结果集逐行处理的指针式对象,核心价值是满足精细化数据操作的特殊需求,但其性能损耗显著,仅需在批量SQL无法解决问题时按需使用,且用完必须及时关闭、释放资源。

总结

1. Cursor(游标)是指向查询结果集的指针式对象,核心功能是逐行处理SQL查询结果,弥补批量操作的精细化不足;

2. 游标使用需遵循“声明-打开-读取-关闭-释放”的生命周期,分静态、动态、只进等类型适配不同场景;

3. 游标性能远低于批量SQL操作,运维中需按需使用,避免滥用导致数据库性能下降。

Q

简述数据库三大范式

A

数据库三大范式是关系型数据库表结构设计的核心规范,主要用于减少数据冗余、避免数据操作异常,保障数据的一致性和合理性,三个范式层层递进、逐步严格。

第一范式要求数据表中的每一个字段都必须是不可再拆分的原子数据,不允许出现字段内包含多个值或复合数据的情况,保证字段的原子性。第二范式需要先满足第一范式,同时要求表中的非主键字段必须完全依赖于整个主键,不能只依赖主键的一部分,消除部分函数依赖,避免数据冗余。第三范式需要先满足第二范式,同时要求非主键字段之间不能存在传递依赖,所有非主键字段只直接依赖主键,不依赖其他非主键字段,进一步减少冗余和数据不一致问题。

总而言之,三大范式从字段原子性、主键完全依赖、无传递依赖三个层面规范表结构设计,核心是精简数据存储、规避增删改异常,实际业务中可根据性能需求做适度的反范式设计。

Q

如何理解数据库表设计的时候字段冗余

A

数据库表设计中的字段冗余,是指刻意违背数据库范式要求,在多张相关表中重复存储相同字段的设计思路,并非设计失误,而是以存储空间为代价,换取查询性能与业务便捷性的权衡方案。

在实际设计中,严格遵循三大范式虽能消除冗余、保证数据一致性,但会产生大量多表关联操作,高并发场景下查询效率极低,而字段冗余正是为解决这一问题产生。其核心应用场景多为查询频繁、数据更新极少的字段,比如订单表中冗余存储用户昵称、商品名称,无需关联用户表和商品表即可快速查询订单详情;同时冗余还能保留历史数据快照,像订单冗余商品原价,可避免商品表后续调价导致历史订单价格失真。但字段冗余也存在明显弊端,会增加数据更新的复杂度,修改重复字段时需同步更新多张表,若控制不当极易出现数据不一致,因此冗余字段必须选择更新频率低的字段,且通过事务、程序逻辑等方式保障数据同步。

总而言之,字段冗余是空间换性能的灵活设计,核心是平衡数据一致性与查询效率,合理冗余可大幅提升业务查询性能,过度冗余则会增加维护成本,需结合实际业务场景按需使用。

Q

varchar和char的区别

A

varchar和char是关系型数据库中最常用的两种字符串存储类型,核心差异在于存储空间分配方式、长度特性及性能表现,char为定长存储,varchar为变长存储,二者适配不同的字符串存储场景。

具体来说,存储空间分配上,char按声明的固定长度占用空间,例如定义char(10),无论实际存储1个还是10个字符,均占用10个字符的存储空间,未填满的部分会用空格填充;varchar则按实际存储的字符长度分配空间(额外占用1-2字节记录长度),例如varchar(10)存储1个字符仅占用2字节左右(不同数据库略有差异),能有效节省存储空间。性能与适用场景上,char因长度固定,查询时无需解析长度信息,读取效率略高,但易造成空间浪费,适合存储长度固定的字符串,如手机号(11位)、身份证号(18位)、性别标识等;varchar长度可变,空间利用率高,但读取时需先解析长度,性能略低于char,适合存储长度波动大的字符串,如姓名、地址、商品描述等。此外,char存储的末尾空格在部分数据库查询时会自动截断,而varchar会保留实际存储的空格,且二者最大长度限制不同(如MySQL中char最大255字符,varchar最大65535字符)。

总而言之,char和varchar的核心区别是定长与变长存储,char以空间换性能,适配固定长度字符串;varchar以少量性能损耗换空间效率,适配长度波动大的字符串,需根据实际业务的字符串长度特征选择。

总结

1. char为定长存储,占用固定空间、读取效率高,varchar为变长存储,按实际长度占用空间、空间利用率高;

2. char适合存储手机号、身份证号等固定长度字符串,varchar适合姓名、地址等长度波动大的字符串;

3. char查询时可能截断末尾空格,varchar保留实际空格,二者最大长度限制存在差异。

Q

什么是存储过程?

A

存储过程是数据库中预编译并存储的一组SQL语句集合,可封装复杂的业务逻辑和数据操作,通过指定名称调用执行,核心作用是简化重复操作、提升执行效率并降低应用与数据库的交互成本。

具体来说,存储过程本质是数据库端的“脚本”,并非单一SQL语句,而是支持变量定义、条件判断、循环控制等类编程逻辑的完整操作集合,能将多个关联的SQL操作(如查询、插入、更新、删除)封装为一个整体。创建时需通过专用语句(如MySQL的CREATE PROCEDURE、Oracle的CREATE PROCEDURE)定义逻辑,例如可封装“查询指定用户近30天订单→统计订单总额→更新用户消费等级”的全流程;调用时仅需执行CALL 存储过程名(参数)(MySQL)或EXEC 存储过程名(参数)(SQL Server),无需在应用端重复编写多条SQL。其核心特性体现在三方面:一是支持输入/输出参数,可接收外部传入的条件值,也能返回处理后的结果;二是预编译特性,首次执行后生成的执行计划会被数据库缓存,后续调用无需重新解析,大幅提升执行效率;三是逻辑封装在数据库端,减少应用与数据库的网络交互次数(尤其复杂逻辑),同时可通过权限管控限制对底层表的直接操作,提升数据安全性。但存储过程也存在明显局限:不同数据库的语法差异大,移植性差;调试难度高于普通SQL;过度使用会增加数据库服务器的负载,需结合业务场景合理设计。

总而言之,存储过程是数据库中封装复杂SQL逻辑的预编译程序,核心价值是简化重复操作、提升执行效率、增强数据安全性,运维中需平衡其优势与移植性、调试成本等问题,仅适配重复且复杂的数据库操作场景。

总结

1. 存储过程是预编译存储在数据库中的SQL语句集合,支持变量、循环等编程逻辑,可封装复杂业务操作;

2. 核心优势是提升执行效率、减少网络交互、增强数据安全性,劣势是移植性差、调试难度高;

3. 存储过程需按需使用,适配重复且复杂的数据库操作场景,避免过度增加数据库负载。

Q

乐观锁和悲观锁

A

乐观锁和悲观锁是数据库应对并发操作、保障数据一致性的两种核心锁机制,二者设计思路、实现方式和适用场景完全不同,是数据库并发控制中最常用的两种方案。

悲观锁秉持悲观的并发理念,默认认定并发操作一定会出现数据冲突,因此在数据操作前就会对数据加锁,整个数据处理期间该数据处于锁定状态,其他事务无法修改,其实现依赖数据库自身的锁机制,比如行锁、表锁以及for update语句,会阻塞其他事务的写操作,能严格保证数据一致性,但会大幅降低系统并发能力。乐观锁则秉持乐观的并发理念,默认认为并发冲突极少发生,操作数据时不会加锁,仅在最终提交更新时,通过版本号或时间戳校验数据是否被其他事务修改,若数据已变更则更新失败并需重试,无数据库锁阻塞,并发性能更高,但存在更新失败重试的成本。

总而言之,悲观锁适合写多读少、并发冲突频繁的业务场景,优先保障数据安全与一致性;乐观锁适合读多写少、并发冲突概率低的业务场景,优先保障系统并发性能,实际使用中需结合业务读写特征选择对应锁机制,平衡数据安全与系统效率。

Q

具体阐述超键、候选键、主键、外键的区别

A

超键、候选键、主键、外键是数据库关系模型中用于标识数据、建立表间关联的核心概念,四者在范围、约束和作用上存在明确层级与功能差异,共同支撑数据库的数据完整性与关联性。

超键是关系表中能唯一标识每一行记录的一个或多个属性的集合,核心特征是具备“唯一性”,但允许包含冗余属性。例如在学生表中,{学号,姓名}的属性集合可唯一标识学生,属于超键;仅“学号”这一属性也能唯一标识学生,同样是超键,这体现了超键可包含非必要属性的特点。

候选键是从超键中剔除冗余属性后得到的最小超键,即候选键的任意真子集都无法再唯一标识记录,一个表可存在多个候选键。比如学生表中,“学号”无冗余且能唯一标识,是候选键;若“身份证号”也满足无冗余且唯一标识的条件,那么“身份证号”也是候选键,而{学号,姓名}因含冗余的“姓名”属性,不属于候选键。

主键是从多个候选键中人为选定的、作为表中记录核心唯一标识的候选键,一个表仅能有一个主键,数据库会为主键自动建立索引,且主键值不允许为空、不可重复,比如选定“学号”作为学生表的主键,其就成为该表的核心标识。

外键与前三者不同,它不用于标识本表记录,而是用于建立两个表之间的关联,是一个表中的属性(或属性集合),其值需引用另一个表的主键(或候选键),例如成绩表中的“学号”属性引用学生表的“学号”主键,这个“学号”就是成绩表的外键,能实现表间关联查询,保障数据参照完整性。

总而言之,超键是最宽泛的唯一标识集合,候选键是无冗余的超键,主键是选定的候选键,三者均服务于本表记录的唯一标识;外键则聚焦表间关联,依托主键或候选键实现数据参照完整性,四者的层级关系和功能定位构成了数据库数据标识与关联的基础。

Q

阐述视图的作用。视图可以更改吗

A

视图是数据库基于基表查询结果生成的虚拟表,本身不存储实际数据,主要用于简化数据操作、控制访问权限和保障数据逻辑统一,同时视图并非完全不可更改,其定义和部分数据均可在满足条件时进行修改。

视图的核心作用主要体现在四个方面,一是简化数据查询,可将多表关联、复杂筛选、聚合计算等繁琐SQL封装为视图,使用者直接查询视图即可获取结果,大幅降低查询复杂度。二是实现数据权限控制,通过视图只向用户开放指定字段和数据行,屏蔽手机号、薪资等敏感信息,实现细粒度的数据访问管控。三是提供逻辑隔离,当底层基表结构发生调整时,可修改视图定义保持对外接口不变,避免影响上层业务系统。四是统一数据口径,将通用的统计规则、数据格式固化在视图中,保证不同模块使用数据的标准一致。

关于视图的修改,分为视图定义修改和数据修改两类,视图的定义可以随时通过ALTER VIEW语句进行修改,调整其查询逻辑、关联表和展示字段。而视图中的数据能否增删改,取决于视图类型,单表构建、无聚合函数、无分组去重、无计算字段的简单视图,支持数据增删改操作,修改结果会同步到对应基表;多表关联、包含聚合计算、分组、去重等复杂视图,则不允许修改数据,此类修改操作会执行失败。

总而言之,视图的核心价值是简化操作、安全管控、逻辑解耦和统一标准,是数据库优化使用的重要手段,视图定义可随意修改,简单视图支持数据修改,复杂视图仅能查询无法更新数据,实际使用中需根据视图类型判断操作权限。

Q

阐述索引的工作原理及其种类

A

索引是数据库用于提升查询效率的核心数据结构,通过构建有序的映射关系减少数据扫描范围,其工作原理基于有序查找算法,种类则根据字段、特性、存储方式划分,不同索引适配不同的业务查询场景。

索引的工作原理是在数据库表之外单独建立一份有序的索引结构,相当于书籍的目录,其中存储了索引字段的值以及对应数据行的物理存储地址,当执行查询时,数据库不再对整张表进行全表扫描,而是通过索引的有序结构快速定位目标数据的位置,大幅降低磁盘IO操作,主流数据库普遍采用B+树作为索引底层结构,依靠其多路平衡、有序遍历的特性,同时保障等值查询和范围查询的效率,不过索引会占用额外存储空间,且表数据增删改时需要同步维护索引,会产生一定的性能损耗。

索引的种类主要根据不同维度划分,按字段数量可分为单字段索引和联合索引,单字段索引基于单个字段构建,联合索引由多个字段组合而成,遵循最左匹配原则;按数据唯一性可分为普通索引和唯一索引,唯一索引要求字段值不可重复,主键索引是特殊的唯一索引,不允许为空且一张表仅有一个;按物理存储方式可分为聚簇索引和非聚簇索引,聚簇索引的数据行与索引存储在一起,决定表的物理存储顺序,非聚簇索引与数据分离,查询时通常需要回表获取完整数据;此外还有覆盖索引,即查询所需字段全部包含在索引中,无需回表即可直接返回结果,查询效率最优。

总而言之,索引的核心原理是通过构建有序映射结构避免全表扫描,以此提升查询速度,不同类型的索引在适用场景、查询效率和维护成本上存在差异,实际使用中需结合业务查询特点合理设计,平衡查询性能与数据写入、存储的成本。

Q

详细阐述什么是数据库范式

A

数据库范式是关系型数据库表结构设计的规范化标准,通过层层约束规则解决数据冗余、插入异常、删除异常和更新异常问题,让数据存储更精简、逻辑更清晰,常用范式包括第一范式、第二范式、第三范式和巴斯范式,范式等级越高,数据规范化程度越高,冗余度越低。

第一范式是最基础的范式,要求数据表中的所有字段值都必须是不可再拆分的原子属性,杜绝复合字段和多值字段,这是关系型数据库表成立的基本前提。第二范式建立在第一范式满足的基础上,核心是消除非主键字段对主键的部分函数依赖,要求表中必须存在主键,所有非主键字段都完全依赖于整个主键,而非主键的某一部分,主要针对联合主键场景优化。第三范式需要先满足第二范式,重点消除非主键字段之间的传递函数依赖,保证非主键字段仅直接依赖主键,不依赖其他非主键字段,进一步降低数据冗余。巴斯范式是对第三范式的强化优化,在满足第三范式的前提下,消除主键内部的传递依赖,要求表中所有具有决定作用的字段都必须包含候选键,规避主属性引发的依赖问题,是更严谨的规范化范式。

整体来看,数据库范式是规范表设计的核心依据,逐级规范的目的是优化数据存储逻辑,不过实际业务设计中不会盲目追求最高范式,会结合查询性能需求适度反范式,在数据规范性和查询效率之间找到平衡。

Q

简述数据库优化思路

A

数据库优化是一套从底层到上层、从单点到架构的系统性思路,核心目标是在保证数据安全与一致性的前提下,提升查询响应速度、降低写入延迟、减少资源消耗,覆盖SQL、索引、表结构、配置、架构等多个层面。

具体优化思路上,首先聚焦SQL语句优化,这是最直接有效的优化点,通过分析执行计划定位慢查询,避免全表扫描、无效函数运算、多层嵌套子查询和冗余关联,简化逻辑、合理使用分页,从源头减少数据库开销。其次是索引优化,遵循按需创建、杜绝冗余的原则,为高频查询字段建立合适索引,利用联合索引遵循最左匹配原则,使用覆盖索引避免回表,同时定期清理失效索引、整理索引碎片,提升索引检索效率。然后是表结构优化,在设计时遵循合理范式减少冗余,对高频查询场景适度反范式降低多表关联,字段选用最小合适的数据类型节省存储与IO,针对超大数据量采用分表、分库策略拆分数据压力。再者是数据库参数配置优化,根据服务器硬件资源调整内存缓冲区、连接数、日志策略、IO相关参数,让数据库配置与硬件能力匹配,提升资源利用率。最后是架构层面优化,通过读写分离分担读写压力,主从复制保障高可用,引入Redis等缓存层前置热点数据,减少数据库直接查询请求,从架构上分摊负载。

总而言之,数据库优化遵循由易到难、由点到面的顺序,优先从SQL和索引这类低成本优化入手,再逐步推进表结构、参数配置,最后根据业务规模升级架构,在性能、成本、维护性之间找到最优平衡。

Q

简述存储过程和触发器的区别

A

存储过程和触发器均是数据库中封装自定义逻辑的对象,但二者在触发方式、使用场景、执行控制上存在本质区别,分别适配不同的数据库操作需求。

存储过程是预编译的SQL语句集合,需由用户主动调用(如通过CALL语句),可接收输入输出参数、返回执行结果,执行时机和场景完全由用户掌控,适用于封装复杂的业务逻辑,比如批量数据处理、多表关联查询、业务规则校验等,支持手动执行和灵活调用,具备较强的可控性。

触发器则是依附于数据表的特殊逻辑,无需手动调用,当数据表发生INSERT、UPDATE、DELETE等指定操作时会自动触发执行,无法接收参数,执行过程对用户透明,主要用于保障数据完整性与一致性,比如同步更新关联表数据、校验数据合法性、记录数据变更日志等,仅能被动响应表操作事件。

总而言之,存储过程的核心特征是“主动调用、灵活可控”,适配自定义业务逻辑实现;触发器的核心特征是“被动触发、自动执行”,聚焦表操作的自动数据管控,二者从触发机制到应用场景形成互补,共同支撑数据库的自定义逻辑需求。

Q

简述什么是临时表

A

临时表是数据库中一种临时创建、仅在特定会话或事务周期内存在的非持久化表,核心用于临时存储中间数据,与永久表相比,其生命周期和可见性有明确限制,用完即自动销毁。

临时表的关键特征集中在生命周期和可见性上,按作用范围可分为会话级和事务级两类:会话级临时表仅在创建它的数据库会话中可见,仅对创建者开放,不同会话可创建同名临时表且互不干扰,当会话断开(如关闭数据库连接)时,该表会自动删除;事务级临时表的生命周期更短,仅存在于当前事务周期内,事务提交或回滚后即刻销毁。临时表不占用数据库永久存储空间,数据和结构均临时存放,常用于存储复杂查询的中间结果、批量数据处理的临时缓存等场景,比如多步数据计算中临时存放中间值,避免重复扫描基表,提升处理效率。

总而言之,临时表的核心特点是临时性、隔离性和非持久化,专为临时数据处理设计,既能简化复杂的数据操作流程,又不会污染永久表空间,是数据库处理中间数据的高效工具。

Q

简述事务的隔离级别

A

事务隔离级别是数据库控制并发事务相互影响的标准规则,核心用于解决脏读、不可重复读、幻读等并发问题,从低到高共分为四个等级,隔离性与并发性能呈反向关系,级别越高隔离性越强、并发效率越低。

读未提交是最低隔离级别,允许事务读取其他未提交事务的数据,会产生脏读、不可重复读、幻读全部三种问题,实际应用极少使用。读已提交只允许事务读取其他事务已提交的数据,能够解决脏读问题,但仍存在不可重复读和幻读,是Oracle等多数数据库的默认隔离级别。可重复读保证同一事务内多次读取同一数据结果一致,解决了脏读和不可重复读,也是MySQL InnoDB引擎的默认隔离级别,通过MVCC机制可有效规避幻读。串行化是最高隔离级别,强制事务按顺序串行执行,彻底杜绝所有并发数据问题,但会严重降低系统并发性能,仅用于对数据一致性要求极高的场景。

总而言之,四种事务隔离级别从低到高逐步强化数据隔离效果,同时牺牲并发性能,实际业务中需根据数据一致性要求和性能需求,选择适配的隔离级别。

Q

请阐述B+树索引和哈希索引的区别

A

B+树索引和哈希索引是数据库中两种核心的索引结构,二者基于不同的数据结构和查找原理,在查询类型、性能表现、适用场景上存在本质差异,分别适配不同的业务查询需求。

B+树索引以B+树为底层数据结构,数据按索引字段有序排列,核心优势是支持等值查询和范围查询(如>、<、between等),查询效率稳定,时间复杂度为O(log n),且能通过叶子节点的有序链表实现范围遍历,适合主键索引、联合索引等高频查询场景,是MySQL InnoDB等主流关系型数据库的默认索引类型。

哈希索引基于哈希表实现,通过哈希函数将索引字段映射为哈希值,仅支持等值查询,查询命中时效率极高(时间复杂度接近O(1)),但无法支持范围查询,且存在哈希冲突问题,冲突时需遍历链表导致性能下降,同时哈希索引的数据无序存储,不适合排序、分组等操作,多用于内存数据库(如Redis)或仅需高频等值查询的场景。

总而言之,B+树索引的核心价值是适配有序查询和范围操作,满足关系型数据库的复杂查询需求;哈希索引的核心价值是等值查询效率极致,适配简单等值查询场景,二者需根据查询类型和业务需求选择,是数据库索引设计的关键考量维度。

版权声明

泽智软科出品

未经允许不得转载

泽智

软科

扫二维码

了解详情

END

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-03 08:45:24 HTTP/2.0 GET : https://15386.cn/a/461944.html
  2. 运行时间 : 0.096982s [ 吞吐率:10.31req/s ] 内存消耗:4,519.23kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b958e93beee268670d441240d92efcae
  1. /yingpanguazai/ssd/ssd1/www/no.15386.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/no.15386.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/no.15386.cn/runtime/temp/97c957f747c268aee476c4e16775dd7c.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000479s ] mysql:host=127.0.0.1;port=3306;dbname=no_15386;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000604s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000307s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000337s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000634s ]
  6. SELECT * FROM `set` [ RunTime:0.000231s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000689s ]
  8. SELECT * FROM `article` WHERE `id` = 461944 LIMIT 1 [ RunTime:0.000537s ]
  9. UPDATE `article` SET `lasttime` = 1772498724 WHERE `id` = 461944 [ RunTime:0.005938s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000291s ]
  11. SELECT * FROM `article` WHERE `id` < 461944 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001744s ]
  12. SELECT * FROM `article` WHERE `id` > 461944 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000434s ]
  13. SELECT * FROM `article` WHERE `id` < 461944 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001173s ]
  14. SELECT * FROM `article` WHERE `id` < 461944 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004777s ]
  15. SELECT * FROM `article` WHERE `id` < 461944 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.012002s ]
0.098569s