乐于分享
好东西不私藏

八、AI提数助手SQL生成、校验、执行层设计:从SQL Plan到可信查询执行

八、AI提数助手SQL生成、校验、执行层设计:从SQL Plan到可信查询执行

在前一篇《AI提数中表字段定位:Schema Linking、元数据检索与业务语义匹配》中,我们把用户的数据需求从标准语义任务推进到了SQL Plan。
也就是说,系统已经知道:

查什么指标:支付GMV
用什么字段:paid_gmv_amt
查哪张表:dws_trade_buyer_month
按什么维度分组:receiver_receiver_city_code
加什么条件:stat_month = 202604、receiver_province_code = 44、buyer_type_code = B
怎么聚合:SUM

这一篇要继续往下走,用SQL Plan的输出去做SQL生成和校验执行;

一、为什么SQL生成不能等同于“让大模型写SQL”

本篇文章实际是解决一个更靠近生产的问题:

如何把SQL Plan稳定转成可执行SQL,并且确保这条SQL安全、正确、可控、可解释?

很多人理解AI提数,会把这一层简单看成:

让大模型写SQL

这个理解太粗了。
企业级AI提数里的SQL生成不是创作任务,而是一个受约束的工程任务。它不是让模型自由发挥,而是基于前面已经生成的SQL Plan,在查询生成层、安全治理层、查询执行层中逐步完成:

→ SQL Plan
→ SQL生成
→ SQL校验
→ 权限与安全治理
→ 性能与资源控制
→ 查询执行
→ 结果校验
→ 交互反馈

直接让大模型从用户问题写SQL,风险非常高:

风险
典型表现
后果
表字段幻觉
生成不存在的表或字段
SQL执行失败
Join错误
Join条件缺失或路径错误
数据重复、数据丢失
聚合错误
比例类、余额类指标被直接SUM
结果错误
Group By错误
非聚合字段未分组
SQL报错或结果不准
条件遗漏
漏掉时间、权限、口径条件
口径错误或越权
方言混用
Hive、SparkSQL、MySQL函数混用
SQL不可执行
性能风险
大表无分区、无Limit
查询拖垮系统
安全风险
查询敏感字段或生成危险SQL
数据泄露

所以,第八篇的核心观点是:

SQL生成不是让大模型自由写SQL,而是基于SQL Plan进行受约束、可校验、可治理的工程化生成。

这一层做不好,前面对话理解、业务语义、表字段定位做得再准,也可能在最后一步翻车。

二、SQL生成与校验在AI提数架构中的位置

从整体架构看,第八篇覆盖的是三个层:

→ 查询生成层
→ 安全治理层
→ 查询执行层

它们在AI提数主链路中的位置如下:

→ 交互入口层
→ 对话理解层
→ 业务语义层
→ 表字段定位层
→ 查询生成层
→ 安全治理层
→ 查询执行层
→ 结果解释与反馈层

1. 查询生成层的目的

查询生成层的核心目标是:

把SQL Plan稳定转换成目标查询引擎可以执行的SQL。

它主要负责:

SQL生成
SQL方言适配
SQL语法校验
SQL语义校验
SQL Plan一致性校验
输出可执行SQL和校验报告

这里重点不是“生成一段SQL文本”,而是“按计划、按方言、按规则生成SQL”。
SQLGlot官方将其定位为SQL parser、transpiler、optimizer和engine,可用于SQL解析、转译、优化和多方言处理;这说明在工程实践中,SQL处理应该尽量结构化,而不是完全依赖字符串拼接或大模型自由生成。(SQLGlot)

2. 安全治理层的目的

安全治理层的核心目标是:

保证SQL不越权、不泄露、不危险、不拖垮系统。

它主要负责:

权限校验
行列权限注入
敏感字段处理
危险SQL拦截
导出审批控制
性能与资源治理
审计记录

这一层不只是“安全部门的事”,而是AI提数能不能进生产的基础。

3. 查询执行层的目的

查询执行层的核心目标是:

把通过校验的SQL稳定执行,并把执行状态、结果质量和异常反馈回系统。

它主要负责:

同步查询
异步任务
执行状态管理
超时控制
失败重试
执行结果校验
执行审计

查询执行层不是简单调用数据库接口。它要管任务、管资源、管异常、管审计,还要把错误反馈给前面的表字段定位层、SQL Plan层和交互层。

4. 与交互层的关系

SQL生成与执行不是后端黑盒。它需要和交互层形成闭环:

后端状态
交互层应该展示什么
高风险SQL
执行确认卡
权限不足
权限申请入口
低置信SQL
SQL解释与候选选择
查询过大
转异步任务提示
执行失败
失败原因与修复建议
空结果
空结果原因诊断
SQL可执行
查询进度、结果和解释

这就是企业级AI提数和普通Text-to-SQL Demo的差别:
不是“生成SQL就结束”,而是要把生成、校验、执行、反馈全部产品化。

三、输入与输出:SQL Plan进来,可信查询任务包出去

1. 输入:SQL Plan

第七篇已经讲过,表字段定位层的输出不是SQL,而是SQL Plan。第八篇的输入就是这个SQL Plan。

一个比较完整的SQL Plan应该包含:

query_type
dialect
main_table
join_plan
select_items
metric_items
dimension_items
output_fields
where_conditions
group_by
having
order_by
limit
partition_filters
permission_filters
sensitive_fields
risk_flags

示例:

{
  "query_type": "group_metric_query",
  "dialect": "spark_sql",
  "from": {
    "main_table": "dws_trade_buyer_month",
    "alias": "t"
  },
  "select": [
    {
      "role": "dimension",
      "field": "receiver_receiver_city_code",
      "alias": "收货城市"
    },
    {
      "role": "metric",
      "expr_type": "aggregation",
      "aggregation": "SUM",
      "field": "paid_gmv_amt",
      "alias": "支付GMV"
    }
  ],
  "where": [
    {
      "source": "time",
      "field": "stat_month",
      "operator": "=",
      "value": "202604"
    },
    {
      "source": "user_filter",
      "field": "receiver_province_code",
      "operator": "=",
      "value": "44"
    },
    {
      "source": "user_filter",
      "field": "buyer_type_code",
      "operator": "=",
      "value": "B"
    }
  ],
  "group_by": ["receiver_receiver_city_code"],
  "permission_filters": [],
  "risk_flags": []
}

SQL Plan一定要强结构化。
不要把它做成半截SQL,也不要做成自然语言说明。

2. 输出:可信查询任务包

SQL生成与校验层的输出也不应该只是一段SQL。
更合理的输出是一个可信查询任务包

{
  "sql": "SELECT receiver_receiver_city_code AS `收货城市`, SUM(paid_gmv_amt) AS `支付GMV` FROM dws_trade_buyer_month WHERE stat_month = '202604' AND operation_operation_region_code = 'EAST_CN' AND buyer_type_code = 'BIZ' GROUP BY receiver_receiver_city_code",
  "dialect": "spark_sql",
  "validation_report": {
    "syntax_valid": true,
    "semantic_valid": true,
    "plan_consistent": true,
    "permission_valid": true,
    "performance_risk": "low"
  },
  "execution_mode": "sync",
  "risk_flags": [],
  "interaction_message": {
    "need_confirm": false,
    "explanation": "本次查询使用支付GMV指标,按收货城市分组,过滤华东区域、企业买家和202604统计期。"
  }
}

这个任务包至少包括:

可执行SQL
SQL方言
SQL校验报告
权限校验结果
安全风险标记
性能评估结果
执行模式:同步/异步
查询任务ID
结果元数据
交互层反馈内容
审计信息

这一章的核心判断是:

这一层的输出不是孤立SQL,而是可执行、可审计、可解释、可反馈的可信查询任务包。

四、查询生成层:从SQL Plan到可执行SQL

查询生成层是第八篇的第一个核心层。它解决的是:

SQL Plan如何稳定变成SQL?

这里可以分成几个子能力:模板生成、AST生成、LLM辅助生成、混合生成、方言适配、SQL校验。

1. 查询生成层的目标

查询生成层要解决四件事:

把SQL Plan转成SQL
适配目标SQL方言
保证SQL语法正确
保证SQL与SQL Plan一致

这一步最怕“看起来能跑,实际上偏离Plan”。
例如SQL Plan里明确要求:

where: operation_operation_region_code = 'EAST_CN'

但生成出来的SQL漏掉了这个条件。
这不是小问题,而是结果口径错误,甚至可能是权限风险。

2. SQL生成方法一:模板生成

模板生成适合高频、标准、结构稳定的查询。
例如:

单指标查询
分组统计
趋势查询
排名查询
明细查询

模板示例:

SELECT
  {dimension_fields},
  {metric_exprs}
FROM {main_table}
WHERE {where_conditions}
GROUP BY {group_by_fields}
ORDER BY {order_by_exprs}
LIMIT {limit}

比如SQL Plan是:

维度:receiver_receiver_city_code
指标:SUM(paid_gmv_amt)
表:dws_trade_buyer_month
条件:stat_month='202604'、receiver_province_code='44'

模板可以稳定生成:

SELECT
  receiver_receiver_city_code AS `收货城市`,
  SUM(paid_gmv_amt) AS `支付GMV`
FROM dws_trade_buyer_month
WHERE stat_month = '202604'
  AND operation_operation_region_code = 'EAST_CN'
GROUP BY receiver_receiver_city_code;

模板生成的优点很明确:

稳定
可控
易校验
适合高频场景
便于审计

但也有不足:

复杂查询模板容易膨胀
派生计算支持弱
多层子查询不够灵活
维护成本会上升

所以商品策略上不要指望模板覆盖所有查询。
更合理的是:模板覆盖80%的高频标准查询,复杂查询走AST或LLM辅助。

3. SQL生成方法二:AST生成

AST生成不是拼SQL字符串,而是构建结构化语法树,再渲染成目标方言SQL。
它适合:

跨方言SQL生成
规则改写
SQL结构校验
复杂查询组合
自动插入权限条件
自动补充分区条件

为什么AST更适合企业级系统?
因为字符串拼接很容易出问题,比如:

WHERE条件拼接顺序错
字段别名冲突
括号缺失
SQL注入风险
方言函数不一致

AST方式可以把SQL当成结构化对象处理:

Select节点
From节点
Join节点
Where节点
GroupBy节点
OrderBy节点
Limit节点

再根据目标方言渲染成SQL。
商品视角看,AST生成适合成为企业级AI提数的主生成方式。
它比模板更灵活,比LLM自由生成更稳定。

4. SQL生成方法三:LLM辅助生成

LLM不是不能用,而是不能乱用。
LLM适合处理:

复杂同比环比
窗口函数
多层子查询
复杂派生指标
非标准计算逻辑
自然语言解释转SQL片段

比如用户问:

看一下华东区域各收货城市支付GMV同比增长率

这里可能需要:

当前期支付GMV
去年同期支付GMV
增长额
增长率

这类查询如果全部靠模板,会比较僵硬;如果靠AST,也需要较复杂的规则。LLM可以辅助生成派生表达式或子查询结构。

但不建议这样:

用户原问题 → LLM → SQL

建议这样:

→ SQL Plan
→ 模板/AST生成基础SQL
→ LLM辅助生成复杂片段
→ SQL Parser校验
→ SQL Plan一致性校验
→ 安全治理层校验

也就是说,LLM只能在受控空间内工作。它可以补复杂逻辑,但不能绕开SQL Plan、字段候选、权限规则和校验器。

5. 混合生成策略

企业级系统更推荐混合策略。

查询类型
推荐生成方式
高频固定查询
模板生成
标准聚合查询
AST生成
明细查询
模板/AST优先
趋势查询
模板 + AST
同比环比
AST + LLM辅助
复杂派生指标
LLM辅助片段生成
多方言适配
AST + Dialect Adapter
高风险查询
模板/AST优先,LLM只辅助

核心原则是:

SQL生成方法不应该押注单一路线,而应该采用模板、AST、LLM和规则校验协同的混合架构。

6. SQL方言适配

企业数据环境通常不是单一数据库。
可能同时存在:

Hive
SparkSQL
MySQL
PostgreSQL
ClickHouse
Doris
Trino
Oracle
SQL Server

同一个SQL Plan,在不同引擎上生成的SQL可能不同。
方言差异包括:

差异类型
示例
日期函数
date_add、DATEADD、INTERVAL
字符串函数
concat、concat_ws、
类型转换
CAST写法差异
Limit语法
LIMIT、FETCH FIRST
引号规则
field、"field"、[field]
分区处理
Hive/Spark分区字段、ClickHouse分区裁剪
窗口函数
不同引擎支持差异
时间格式
yyyyMMdd、yyyy-MM-dd、timestamp

方言适配建议遵循:

SQL Plan保持方言无关
SQL生成器按dialect渲染
函数通过方言函数映射表转换
SQL Parser做目标方言二次验证

7. SQL校验体系

查询生成层至少要做三类校验:

语法校验
语义校验
SQL Plan一致性校验

7.1 语法校验

语法校验解决的是:

SQL能不能被目标方言解析?

检查内容包括:

SQL是否能被Parser解析
括号是否匹配
函数调用是否正确
别名是否规范
字符串转义是否安全
是否存在非法SQL片段

语法校验不应该等到数据库执行时报错,而应该在执行前完成。

7.2 语义校验

语义校验解决的是:

SQL虽然语法正确,但业务和结构是否正确?

检查内容包括:

表是否存在
字段是否存在
字段是否属于对应表
字段别名是否冲突
非聚合字段是否进入Group By
聚合方式是否符合指标定义
Join字段是否存在
Where字段和值是否匹配

Apache Calcite提供标准SQL parser、validator和JDBC driver,并支持查询优化;其能力说明SQL处理不应停留在字符串层面,而应该有解析、校验和优化过程。

7.3 SQL Plan一致性校验

这是AI提数中特别重要的一类校验。
它检查:

Select是否覆盖Plan中的指标和维度
Where是否覆盖用户条件、时间条件、口径条件
Group By是否覆盖维度字段
Order By是否符合排序计划
Limit是否符合限制
Join是否符合Join Plan
权限过滤是否未被覆盖

比如SQL Plan里要求:

stat_month = '202604'
operation_operation_region_code = 'EAST_CN'
buyer_type_code = 'BIZ'

生成SQL必须完整包含这些条件。漏掉任何一个,SQL语法可能仍然正确,但结果已经不可信。
查询生成层的核心观点是:

SQL校验不能只做语法校验,还要校验SQL是否忠实执行了SQL Plan。

五、安全治理层:权限、安全、性能与资源控制

SQL生成后,不能马上执行。
它必须经过安全治理层。
安全治理层解决的是:

这条SQL能不能执行?
该不该执行?
谁能执行?
能查多少?
能不能导出?
会不会泄露?
会不会拖垮系统?

1. 安全治理层的目标

安全治理层不是一个“最后拦截器”。它应该贯穿:

SQL Plan阶段
SQL生成阶段
SQL校验阶段
SQL执行前阶段
SQL执行后审计阶段

核心职责包括:

权限校验
行列权限注入
敏感字段处理
危险SQL拦截
导出审批控制
性能与资源治理
审计记录

2. 权限校验

权限校验至少覆盖:

表权限
字段权限
指标权限
维度权限
行权限
列权限
导出权限
审批权限

例如,一个用户可能有支付GMV汇总指标权限,但没有买家明细权限;可能能看华东区域域数据,但不能看全站数据;可能能看脱敏买家手机号,但不能看明文买家手机号。

这就要求权限体系和SQL Plan绑定,而不是只在数据库层报错。

3. 行列权限注入

如果用户只能看华东区域数据,系统应该自动注入:

AND operation_operation_region_code = 'EAST_CN'

如果用户只能看本组织数据,可能需要注入:

AND org_code IN (...)

如果SQL Plan没有权限条件,安全治理层必须做两种处理之一:

自动注入权限条件
或者阻断执行

不能让一条缺少权限过滤的SQL直接进入执行层。

4. 敏感字段处理

敏感字段包括:

买家手机号
证件号
买家标识
详细地址
商家结算金额
账户信息

处理策略可以分层:

场景
策略
无权限查敏感字段
拒绝
可查但不可明文
脱敏
聚合结果
可展示
明细导出
审批
高敏字段
特定角色可见

例如用户要求:

导出华东区域企业买家买家手机号和支付GMV

即使SQL可以生成,也不能直接执行。系统需要判断:

是否有买家明细权限
是否有买家手机号字段权限
是否需要脱敏
是否允许导出
是否需要审批

5. 危险SQL拦截

AI提数原则上只允许SELECT。
必须拦截:

DROP
DELETE
UPDATE
INSERT
TRUNCATE
ALTER
CREATE
GRANT
SELECT * 敏感明细
无条件全表扫描
导出敏感数据

这部分不是形式主义,而是生产系统底线。

6. 导出与审批控制

导出不是查询的简单后置动作。
它需要单独治理:

是否明细数据
是否包含敏感字段
是否超过行数限制
是否需要审批
是否需要水印
是否需要审计

比如汇总结果可以直接展示,但百万行买家明细导出必须走审批、脱敏、水印和审计。
交互层也要配合:如果触发审批,要展示审批入口,而不是只返回“无权限”。

7. 性能与资源治理

AI生成的SQL即使正确,也可能非常重。
常见风险:

大表无分区条件
明细查询无Limit
高基数字段Group By
笛卡尔积Join
多层子查询嵌套
大范围历史扫描
窗口函数过重
Join表过多

性能校验规则包括:

是否包含必要分区条件
扫描时间范围是否过大
明细查询是否带Limit
Group By维度基数是否过高
Join表数量是否超阈值
Join是否存在无条件关联
预计扫描量是否超限
预计返回行数是否超限

可以基于:

表大小
分区数量
统计信息
历史执行耗时
查询引擎Explain
扫描字节数估算
返回行数估算

做执行前成本评估。

8. 风险处置策略

不同风险要有不同处置方式。

风险
策略
缺少分区
拒绝执行或要求补时间
明细无Limit
自动加Limit或提示用户
扫描过大
让用户缩小范围
Join风险高
提示确认或改用预聚合表
返回过多
分页、转异步、导出审批
涉及敏感字段
脱敏、拒绝或审批
权限不足
提供权限申请入口

安全治理层的核心观点是:

安全治理层不只是权限拦截器,而是权限、安全、性能、资源和审计的统一治理层。

六、查询执行层:执行调度、任务管理与结果校验

SQL通过查询生成层和安全治理层后,才进入查询执行层。
查询执行层解决的是:

怎么执行?
怎么管理任务?
怎么处理异常?
怎么校验结果?
怎么把状态反馈给用户?

1. 查询执行层的目标

查询执行层负责:

安全执行通过校验的SQL
管理执行状态和任务生命周期
识别执行异常和结果异常
把状态反馈给交互层
沉淀执行日志和审计记录

它不是简单调用数据库,而是一个完整任务系统。

2. 同步查询

同步查询适合:

小结果集
汇总指标
短耗时查询
低风险查询
高置信SQL

例如:

查华东区域上月支付GMV
查各收货城市支付GMV排名
查近6个月支付GMV趋势

这类查询如果数据源稳定、扫描范围可控,可以同步返回。

3. 异步查询

异步查询适合:

大表扫描
明细导出
多表Join
长耗时查询
需审批查询

异步任务需要支持:

任务提交
进度查询
取消任务
失败重试
结果缓存
过期清理
下载控制
审批状态联动

例如用户要导出百万级明细数据,不能让前端一直等待。系统应该返回任务ID,并告诉用户:

查询任务已提交,预计需要几分钟。完成后可在任务中心下载。

4. 查询任务管理

任务管理需要记录:

任务ID
执行SQL
执行用户
提交时间
运行状态
查询引擎
耗时
扫描量
返回行数
错误信息
取消操作
重试机制
审批状态

这部分对商品体验和审计都很重要。
用户需要知道任务是否还在运行。管理员需要知道谁发起了高消耗查询。系统需要知道失败是否可以重试。

5. 执行审计

执行审计必须记录:

谁查了什么
使用了哪个SQL Plan
使用了哪个SQL
命中哪些表字段
是否导出
是否涉及敏感字段
是否发生权限裁剪
是否触发审批
是否被用户采纳

审计不是只为了合规,也为了排查问题。
比如用户反馈“这个数不对”,系统可以回看:

当时使用了哪个口径
查了哪张表
加了哪些条件
有没有权限裁剪
有没有默认过滤

6. 执行结果校验

SQL跑完不代表结果可信。结果还要校验。

6.1 空结果校验

空结果可能来自:

确实没有数据
时间条件错误
权限裁剪过严
过滤条件错误
Join导致数据丢失
数据未刷新

系统不能只说“无数据”。更好的反馈是:

本次查询无结果。可能原因包括:当前202604统计期数据未刷新、企业买家条件过窄、或当前权限范围内无数据。

6.2 异常值校验

检查:

结果是否异常为负
同比环比波动是否异常
指标是否超历史范围
Top项是否异常集中
分组结果是否维度爆炸

例如支付GMV突然为负、买家数突然翻10倍,都应该触发提示。

6.3 结果行数校验

检查:

明细是否返回过多
分组是否过细
导出是否超过限制
分页是否需要

6.4 口径一致性校验

检查:

是否使用官方指标
是否使用推荐数据源
是否补齐默认口径条件
是否发生权限裁剪
是否命中风险标记

查询执行层的核心观点是:

查询执行层不只是把SQL跑起来,还要管理任务、校验结果、审计过程,并把异常反馈给用户和系统。

七、失败异常处理:SQL失败后系统应该怎么做

企业AI提数一定会失败。
关键不是“避免所有失败”,而是失败后能不能定位原因、自动修复、清楚反馈。

1. 常见失败类型

失败类型
示例
回流位置
语法错误
方言函数错误、括号错误
查询生成层
表字段错误
字段不存在、别名冲突
表字段定位层
权限错误
无表权限、无字段权限
安全治理层
语义错误
Group By缺失、聚合错误
SQL校验层
性能错误
超时、扫描过大
性能治理层
数据错误
分区不存在、数据未刷新
数据资产层
Join错误
结果重复或为空
表字段定位层
空结果
条件过严、权限裁剪、无数据
执行层/交互层

2. 自动修复策略

不同错误要回流到不同层。

字段不存在 → 回到表字段定位层重新召回字段
方言错误 → 方言转换或函数映射修复
Group By缺失 → 根据SQL Plan补齐
缺少分区 → 追问时间或使用默认时间
权限不足 → 返回权限说明或申请入口
扫描过大 → 建议缩小范围或转异步任务
Join导致空结果 → 回到Join路径重选

这就是闭环。
如果所有失败都只返回“SQL执行失败”,用户体验会很差,系统也不会变好。

3. 错误反馈结构

建议错误反馈结构化。

{
  "error_type": "FIELD_NOT_FOUND",
  "message": "字段 paid_gmv_amt 不存在于当前表",
  "repair_action": "RESELECT_FIELD",
  "next_step": "metadata_recalling",
  "user_message": "当前字段不可用,我会重新选择可用字段。"
}

错误反馈至少包含:

错误类型
技术原因
业务解释
修复动作
下一步状态
面向用户的提示语

4. 失败回流机制

失败不应该停在执行层。
应该回流到:

SQL Plan修正
表字段重新定位
业务语义消歧
权限申请流程
交互层澄清
Bad Case库
评测集

例如:

字段不存在 → 说明元数据或字段映射有问题
权限不足 → 说明需要权限申请入口
空结果 → 可能是条件过严,也可能是Join路径错误
执行超时 → 可能需要性能规则或预聚合表

核心观点:

SQL失败不是终点,而是反馈到SQL Plan、表字段定位、业务语义层和交互层的修正信号。

八、与交互层的钩子:SQL不是黑盒,要能确认、解释、修正

AI提数要让用户信任,不能只返回结果。
它要告诉用户:

用了什么指标
查了哪张表
加了什么条件
是否裁剪了权限
是否用了默认口径
为什么失败
下一步怎么修

1. 执行前确认卡

以下场景建议触发确认:

非推荐数据源
中置信字段
敏感字段
大范围扫描
复杂Join
导出明细
默认口径存在歧义

确认卡展示:

指标口径
数据源
时间范围
过滤条件
权限裁剪
预计扫描量
风险提示
是否继续执行

示例:

本次查询将使用:
指标:支付GMV
数据源:dws_trade_buyer_month
时间:202604统计期
过滤:华东区域、企业买家
维度:收货城市
权限:按当前用户组织权限裁剪
风险:低

是否继续执行?

2. SQL解释卡

SQL解释卡不一定展示完整SQL,可以展示SQL背后的业务解释:

本次查了哪张表
用了哪些字段
按什么维度分组
加了哪些过滤条件
是否使用默认口径
是否注入权限条件

对普通业务用户来说,解释“用了什么口径和条件”比展示一大段SQL更重要。
对技术用户,可以提供“查看SQL”入口。

3. 错误反馈卡

不同错误对应不同交互动作:

错误
交互动作
权限不足
展示权限申请入口
时间缺失
追问时间范围
扫描过大
建议缩小范围
字段不可用
提示重新选字段
数据未刷新
展示数据更新时间
空结果
给出可能原因和调整建议
敏感字段导出
展示审批流程

4. 用户修正入口

用户可能会继续说:

不是这个口径
换一张表
不要按收货城市,按收货省份
时间改成近三个月
这个SQL条件不对
把结果导出Excel

这些反馈不能只作为新问题处理,而要回流到当前SQL Plan:

SQL Plan修正
表字段重选
业务语义消歧
对话状态更新
Bad Case库
评测集

交互层的核心观点是:

交互层不是SQL执行后的展示层,而是SQL生成、确认、执行、修正闭环的一部分。

九、技术架构:SQL生成、治理与执行的一体化链路

整体技术架构可以这样设计:

SQL Plan输入

Plan Validator

Query Generation Layer
  ├─ Template Generator
  ├─ AST Generator
  ├─ LLM-assisted Generator
  └─ Dialect Adapter

SQL Parser / SQL Validator

Governance Layer
  ├─ Permission Validator
  ├─ Security Validator
  ├─ Sensitive Data Handler
  ├─ Performance Validator
  └─ Audit Logger

Execution Layer
  ├─ Sync Executor
  ├─ Async Task Manager
  ├─ Result Validator
  └─ Error Handler

Interaction Adapter

Feedback Loop

核心模块说明:

模块
作用
Plan Validator
校验SQL Plan结构完整性
SQL Generator
生成SQL
Dialect Adapter
适配SQL方言
SQL Parser / Validator
做语法和语义校验
Plan Consistency Checker
校验SQL是否忠实执行Plan
Permission Validator
校验权限和行列过滤
Security Validator
拦截危险SQL和敏感查询
Performance Validator
校验分区、扫描量、Join成本
Execution Manager
管理同步/异步查询
Result Validator
校验空结果、异常值、超限
Interaction Adapter
把确认、错误、解释返回前端
Feedback Handler
沉淀错误和用户修正

这套架构的重点是把SQL生成从“单点能力”变成“一条受控链路”。

十、评估体系:SQL生成与执行怎么判断好坏

没有评估体系,就不知道系统到底是在变好还是变坏。
建议分六类指标。

1. 查询生成指标

SQL生成成功率
SQL语法正确率
SQL方言正确率
SQL Plan覆盖率
模板命中率
AST生成成功率
LLM重试率

这些指标回答:

SQL能不能稳定生成?
生成方式是否可控?
是否过度依赖LLM?

2. SQL校验指标

语法校验通过率
语义校验通过率
Plan一致性通过率
Group By错误拦截率
Join风险拦截率
字段幻觉拦截率

这些指标回答:

SQL有没有被有效校验?
校验层能不能拦住错误?

3. 安全治理指标

权限条件注入率
敏感字段拦截率
危险SQL拦截率
性能风险拦截率
权限违规拦截率
导出审批命中率
审计日志完整率

这些指标回答:

SQL是否安全?
是否越权?
是否有审计?

4. 执行指标

SQL执行成功率
平均执行耗时
扫描数据量
超时率
失败重试率
异步任务完成率
任务取消率

这些指标回答:

查询执行是否稳定?
资源消耗是否可控?

5. 结果可信指标

结果一致率
空结果解释准确率
异常值识别率
用户采纳率
用户纠错率
Bad Case复发率

这些指标回答:

用户是否相信结果?
结果是否符合业务预期?

6. 商品体验指标

确认卡通过率
权限申请转化率
错误反馈解决率
用户二次追问率
用户放弃率
查询完成平均轮次

这些指标回答:

用户是否顺利完成提数?
交互是否增加负担?
错误是否能被修复?

十一、常见问题与方法

问题
表现
方法
LLM生成字段幻觉
SQL里出现不存在字段
只基于SQL Plan和候选字段生成,生成后做字段存在性校验
方言混乱
Hive、MySQL、Spark函数混用
Dialect Adapter + SQL Parser
Group By错误
非聚合字段未分组
SQL Plan层校验Select和Group By关系
权限遗漏
查询越权数据
Plan阶段强制注入权限过滤
大表全扫
无时间分区
分区条件强制校验,不满足拒绝执行
Join导致数据放大
支付GMV被重复计算
Join基数校验、认证Join路径、结果异常检测
空结果无法解释
用户只看到“无数据”
诊断权限、时间、过滤、Join、数据刷新状态
用户不信SQL
黑盒生成
展示口径、数据源、过滤条件和SQL解释
执行失败无法修复
只返回数据库错误
错误分类后回流到表字段定位、SQL Plan或交互层
导出失控
明细结果被直接下载
导出审批、脱敏、水印、审计

这些问题非常真实。企业AI提数落地时,真正让系统不可用的往往不是“模型不会写SQL”,而是这些工程细节没有做好。

十二、总结:从SQL Plan到可信查询执行

第八篇讲的是AI提数链路中非常关键的一段:

→ SQL Plan
→ SQL生成
→ SQL校验
→ 安全治理
→ 查询执行
→ 结果校验
→ 交互反馈

这段链路覆盖三个架构层:

查询生成层
安全治理层
查询执行层

查询生成层负责把SQL Plan变成可执行SQL。
安全治理层负责保证SQL不越权、不泄露、不危险、不拖垮系统。
查询执行层负责把SQL稳定跑起来,并把执行状态、结果质量和异常反馈给用户和系统。

这篇文章要强调的不是“大模型能不能写SQL”,而是:

企业级AI提数能不能把SQL生成、SQL校验、权限安全、性能治理、查询执行、异常处理和交互反馈做成一条可信链路。

如果只靠LLM自由生成SQL,系统很难稳定。
如果基于SQL Plan进行受控生成,并配合语法校验、语义校验、权限校验、性能校验和结果校验,系统才有机会进入生产。

最后可以用三句话收束:

SQL生成不是让大模型自由写SQL,而是基于SQL Plan进行受约束、可校验、可解释的工程化生成。

SQL校验不能只停留在语法层,还要覆盖语义、权限、安全、性能、执行结果和业务口径一致性。

企业级AI提数真正可信的链路,不是“自然语言到SQL”,而是“自然语言到结构化任务,到标准语义,到SQL Plan,再到可信查询执行”。

下一篇会进一步推进AI提数结果解释与反馈闭环:如何让用户理解、相信并修正数据结果。

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