乐于分享
好东西不私藏

万字长文:从零搭一套爆火的AI知识库,附完整工具链和踩坑记录

万字长文:从零搭一套爆火的AI知识库,附完整工具链和踩坑记录

为什么你的AI知识库总是不 work

大模型很强,但它不知道你公司有几号员工、不清楚上一期项目的验收标准、更不了解你积累了几百份技术文档。把这些私有知识用起来,方式主要有两种:微调(Fine-tuning)检索增强生成(RAG,Retrieval-Augmented Generation)

微调相当于让模型重新记忆一遍知识,训练周期长、成本高,而且企业数据往往更新频繁,微调完没过多久知识又过时了。RAG则完全不一样——模型本身不存储知识,知识存在外部数据库里,查询时实时检索出来作为上下文。灵活性高、更新成本低、可追溯可审计。对于大多数企业应用场景,RAG就是最优解。

但RAG系统搭起来,"跑起来"和"跑得好"之间差了十万八千里。召回不准、上下文被截断、embedding模型选错、chunk大小靠猜、向量数据库选型失误……每一个坑都是踩过的人才知道疼。这篇文章的目标很明确:让一个有一定编程基础的人,从零搭建一套真正能用的AI知识库,不走弯路,不踩重复的坑。


一、核心技术架构:先搞懂原理再动手

搭知识库之前,先把整个系统的数据流搞清楚。以下是RAG系统的完整架构,分为写入侧和查询侧两部分:

写入侧:文档 → 解析(PDF/Word/Markdown) → 分块(Chunking) → 向量化(Embedding) → 存储(Vector Database)

查询侧:用户问题 → 向量化 → 检索(Retrieval) → 精排(Rerank) → 拼上下文 → 大模型生成

每一步都有大量工程选择,也对应着大量可能的坑。

1.1 Embedding模型:选错模型,努力白费

Embedding模型负责把文本转换为向量表示,是整个RAG系统的根基。如果Embedding质量差,后面每一步的优化都是徒劳。

目前主流的Embedding模型分为几类:

OpenAI系列text-embedding-3-small(1536维)和text-embedding-3-large(3072维)。效果稳定,API调用简单,但中文能力相对弱,而且API成本按token计费,企业大规模使用需要考虑成本。

开源中文Embedding:BAAI开源的bge-large-zh(1024维)是目前中文场景公认最强的开源选择,在MTEB中文榜单上长期排名第一。另一个常用选择是幂新产品开源的m3e-base(768维),轻量、中文效果好,适合中等规模部署。

多语言支持:Jina AI的jina-embedding支持多语言,长文本支持到8192 token,适合需要处理中英混合文档的场景。

选模型的核心原则只有一条:Embedding训练时用的语料,和你实际处理的文档语言要匹配。中文文档用中文优化的模型,英文文档用英文优化的模型,混用会直接导致30%-50%的召回错误率。

1.2 向量数据库:存储是地基,地基不稳楼必塌

向量数据库负责存储文本的向量表示,并提供相似度检索能力。主流选择有以下几种:

Milvus:功能最完整,支持分布式、混合检索、属性过滤,适合亿级向量规模。缺点是运维复杂,需要Kubernetes才能跑好生产实例。

Qdrant:性能表现出色,支持稀疏向量+稠密向量的混合检索,API设计清晰,Docker一键部署,适合千万级向量规模。中型团队首选。

Chroma:最轻量的选择,Python直连,不需要单独部署服务。缺点是不适合生产环境,并发能力弱。适合个人项目或快速验证想法。

FAISS:Meta开源的向量检索库,最轻量,但需要自己管理存储,没有云原生支持。适合在已有系统里嵌入式使用。

选型建议:

数据规模推荐数据库部署方式运维难度
<10万向量Chromapip安装极低
10万-500万QdrantDocker
>500万MilvusKubernetes中高

1.3 分块策略:决定召回质量的核心变量

分块(Chunking)是把文档切成小段的过程,段切成多大、用什么策略切,直接决定召回出来的内容是否完整、是否相关。

固定大小分块是最简单的策略:按字符数或token数切,例如每500字一块,相邻块之间重叠50字防止截断。这个策略的优点是实现简单、大小统一,缺点是完全忽略文档的语义结构。

def chunk_by_chars(text: str, chunk_size: int = 500, overlap: int = 50) -> list[str]:
    """
    按字符数分块,保留重叠避免截断
    
    参数:
        text: 待分块文本
        chunk_size: 每块字符数
        overlap: 相邻块重叠字符数
    """

    chunks = []
    start = 0
    while
 start < len(text):
        end = start + chunk_size
        chunks.append(text[start:end])
        start += chunk_size - overlap
    return
 chunks

语义分块按段落或主题边界切,保留每个段落或主题的完整性。适合结构清晰的文档(论文、报告、产品文档)。实现上可以用大模型判断段落边界,也可以用规则(空行数、标题标记)来识别。

层级分块先按章节粗分,再按段落细分。检索时先召回粗粒度块,再在块内做精细检索。适合超长文档(几十页以上的PDF报告、书籍等)。

经验值:中文场景,每块400-600字是最常见的最优区间,配合50-100字重叠效果最好。如果知识库里多是FAQ类的短文本,每块100-200字就够了。如果是长篇分析报告,800-1200字更合适。


二、完整工具链:从文档到向量

2.1 环境准备

Python 3.10以上,推荐用虚拟环境隔离依赖:

# 创建虚拟环境
python -m venv rag_env
source
 rag_env/bin/activate

# 核心依赖

pip install langchain==0.3.0 langchain-community==0.3.0 langchain-core==0.3.0
pip install langchain-qdrant==0.1.0 qdrant-client==1.12.0
pip install langchain-openai==0.2.0 openai==1.50.0
pip install unstructured==0.16.0 tiktoken==0.7.0
pip install sentence-transformers==3.0.0

如果需要用中文开源Embedding(不依赖OpenAI API):

pip install transformers==4.44.0 torch==2.5.0

2.2 文档解析:统一处理各种格式

企业知识库里通常混着PDF、Word、Markdown、HTML、PPT,每种格式的处理方式都不一样。推荐用unstructured库统一处理:

from unstructured.partition.auto import partition
from
 typing import List

def
 parse_document(file_path: str) -> str:
    """
    统一解析多种格式文档,返回纯文本内容
    
    支持格式:PDF、Word、Markdown、HTML、TXT等
    """

    elements = partition(filename=file_path)
    
    texts = []
    for
 element in elements:
        # 文本段落直接保留

        if
 element.category == "NarrativeText":
            texts.append(str(element))
        # 表格转成标记文本,方便后续处理

        elif
 element.category == "Table":
            texts.append(f"<表格 start>\n{element.text}\n<表格 end>")
        # 标题单独成段

        elif
 element.category == "Title":
            texts.append(f"\n## {element.text}\n")
    
    return
 "\n\n".join(texts)

# 批量处理目录

import
 os
from
 pathlib import Path

def
 process_knowledge_base(input_dir: str, output_dir: str):
    """批量处理知识库文档"""

    Path(output_dir).mkdir(parents=True, exist_ok=True)
    
    for
 filename in os.listdir(input_dir):
        filepath = os.path.join(input_dir, filename)
        if
 not os.path.isfile(filepath):
            continue

        
        try
:
            text = parse_document(filepath)
            output_path = os.path.join(output_dir, filename + ".txt")
            with
 open(output_path, "w", encoding="utf-8") as f:
                f.write(text)
            print
(f"✓ 处理完成: {filename}")
        except
 Exception as e:
            print
(f"✗ 处理失败: {filename}, 错误: {e}")

踩坑提醒:PDF里的表格识别是整个RAG系统里最麻烦的问题。unstructured对简单表格识别率还可以,但遇到合并单元格、跨页表格、嵌套表格时,基本都会识别失败。如果知识库里有很多重要表格,建议先手动导出为Markdown或CSV格式再处理。

PDF处理的另一个常见问题是乱码。很多中文PDF实际上是图片扫描件,根本没有文字层,只能用OCR处理。解决方案是用pdfplumber+pytesseract做OCR:

import pdfplumber

def
 extract_text_from_pdf(pdf_path: str) -> str:
    """提取PDF文字,处理图片型PDF(OCR)"""

    text_parts = []
    
    with
 pdfplumber.open(pdf_path) as pdf:
        for
 page in pdf.pages:
            # 优先提取文字层

            text = page.extract_text()
            if
 text and text.strip():
                text_parts.append(text)
            else
:
                # 文字层为空,说明是扫描件,走OCR

                try
:
                    from
 pdf2image import convert_from_path
                    import
 pytesseract
                    
                    images = convert_from_path(pdf_path, first_page=page.page_number, last_page=page.page_number)
                    for
 img in images:
                        ocr_text = pytesseract.image_to_string(img, lang='chi_sim')
                        text_parts.append(ocr_text)
                except
 Exception as e:
                    print
(f"OCR失败 page {page.page_number}: {e}")
    
    return
 "\n\n".join(text_parts)

2.3 Embedding生成与向量存储

Embedding模型的选择直接影响召回质量。下面是两种主流方案的实现:OpenAI API方案(效果好,但收费)和开源本地方案(免费,但需要GPU)。

方案一:OpenAI Embedding

from langchain_openai import OpenAIEmbeddings
from
 langchain_qdrant import QdrantVectorStore
from
 langchain.schema import Document
from
 qdrant_client import QdrantClient
from
 qdrant_client.models import Distance, VectorParams

# 初始化Embedding模型

embeddings = OpenAIEmbeddings(
    model="text-embedding-3-large",  # 3072维,效果最好
    api_key="your-api-key"
)

# 连接Qdrant向量数据库

client = QdrantClient(host="localhost", port=6333)

# 创建Collection(如果不存在)

collection_name = "knowledge_base"
try
:
    client.recreate_collection(
        collection_name=collection_name,
        vectors_config=VectorParams(size=3072, distance=Distance.COSINE)
    )
    print
(f"✓ Collection '{collection_name}' 创建成功")
except
 Exception:
    print
(f"Collection '{collection_name}' 已存在")

# 构建VectorStore

vector_store = QdrantVectorStore(
    collection_name=collection_name,
    embedding=embeddings,
    client=client,
)

# 写入文档

documents = [
    Document(page_content="RAG系统由检索和生成两部分组成...", metadata={"source": "rag-guide.pdf", "page": 1}),
    Document(page_content="Embedding模型的选择至关重要...", metadata={"source": "rag-guide.pdf", "page": 2}),
]

vector_store.add_documents(documents)
print
(f"✓ 已写入 {len(documents)} 个文档块")

方案二:中文开源Embedding(BGE-large-zh)

如果不希望依赖OpenAI API,可以使用BAAI开源的中文Embedding模型,完全本地运行:

from langchain_community.embeddings import HuggingFaceBgeEmbeddings

# 初始化中文Embedding模型

embeddings = HuggingFaceBgeEmbeddings(
    model_name="BAAI/bge-large-zh-v1.5",
    model_kwargs={"device": "cuda"},  # 有GPU用cuda,没有用cpu
    encode_kwargs={"normalize_embeddings": True}  # 归一化后用余弦相似度
)

# 测试embedding

test_text = "如何搭建AI知识库"
vec = embeddings.embed_query(test_text)
print
(f"向量维度: {len(vec)}")
print
(f"向量前5维: {vec[:5]}")

Qdrant本地启动命令:

docker pull qdrant/qdrant
docker run -d --name qdrant \
  -p 6333:6333 \
  -p 6334:6334 \
  -v $(pwd)/qdrant_storage:/qdrant/storage \
  qdrant/qdrant

2.4 检索与精排:召回不够,精排来凑

基础检索是向量相似度匹配,原理是找到和问题向量最接近的k个文档块。但纯向量检索有一个根本性问题:对语义模糊但关键词精确的查询(例如人名、术语、精确数字)效果差

重排序(Reranker)可以显著提升召回质量。具体做法是:先用向量检索召回20个候选块,再用重排序模型对这20个块重新排序,取top 3-5。

from langchain.retrievers.contextual_compression import ContextualCompressionRetriever
from
 langchain_cohere import CohereRerank
from
 langchain_qdrant import QdrantVectorStore

# 向量检索器(召回20个候选)

vector_retriever = vector_store.as_retriever(
    search_kwargs={"k": 20}
)

# Cohere重排序(精排取top 3)

compressor = CohereRerank(top_n=3, model="rerank-multilingual-v3.0")
compression_retriever = ContextualCompressionRetriever(
    base_retriever=vector_retriever,
    compressors=[compressor]
)

# 查询示例

query = "RAG系统中Embedding模型应该如何选择"
results = compression_retriever.get_relevant_documents(query)

for
 i, doc in enumerate(results):
    print
(f"\n结果 {i+1}:")
    print
(f"
    print(f"
内容: {doc.page_content[:200]}...")

踩坑提醒:Cohere的Reranker API也是收费的,每百万token约1美元。如果想完全免费,可以用sentence-transformers自己跑一个重排序模型。中文场景可以用text2vec训练一个轻量级的重排序模型,或者直接用BAAI/bge-reranker-large


三、完整RAG Pipeline:从文档写入到问答返回

把写入、检索、生成串起来,就是完整的RAG Pipeline:

from langchain_openai import ChatOpenAI
from
 langchain.chains import RetrievalQA
from
 langchain.prompts import PromptTemplate
from
 langchain.retrievers.contextual_compression import ContextualCompressionRetriever
from
 langchain_cohere import CohereRerank

# 初始化大模型

llm = ChatOpenAI(
    model="gpt-4o",
    temperature=0,  # 知识库问答通常不需要随机性
    api_key="your-api-key"
)

# 定义Prompt

rag_prompt = PromptTemplate(
    template="""你是一个专业的知识库助手,基于给定的参考资料回答用户问题。

要求:
1. 只参考【参考资料】中的信息回答,不要编造
2. 如果参考资料中没有相关信息,明确回复"我没有在知识库中找到相关内容"
3. 回答要简洁、有条理,重要的信息加粗

【参考资料】
{context}

【用户问题】
{question}

请回答:"""
,
    input_variables=["context", "question"]
)

# 构建问答链

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",  # 把所有召回的context拼接在一起
    retriever=compression_retriever,
    return_source_documents=True,  # 返回引用来源
    chain_type_kwargs={"prompt": rag_prompt}
)

# 执行查询

print
("=== AI知识库问答系统 ===")
print
("输入 'exit' 退出\n")

while
 True:
    query = input("问题: ").strip()
    if
 query.lower() == "exit":
        print
("再见!")
        break

    
    response = qa_chain({"query": query})
    
    print
(f"\n回答:\n{response['result']}\n")
    print
("=== 引用来源 ===")
    for
 doc in response["source_documents"]:
        source = doc.metadata.get("source", "unknown")
        page = doc.metadata.get("page", "N/A")
        print
(f"- {source} (第{page}页)")
    print
()

四、常见踩坑与解决方案

踩坑一:chunk大小凭感觉设

很多人搭RAG时chunk_size设成512字符就不管了,结果召回出来的段落要么残缺不全,要么包含太多无关内容。

解决方案:先做一个基准测试,对比不同chunk大小的实际召回质量:

def evaluate_chunk_sizes(full_text: str, test_queries: list[str], k: int = 5):
    """
    对比不同chunk大小对召回质量的影响
    
    参数:
        full_text: 完整文档文本
        test_queries: 测试问题列表
        k: 取top k结果评估
    """

    chunk_configs = [
        (300, 30),
        (500, 50),
        (800, 80),
        (1200, 100),
    ]
    
    results = []
    for
 chunk_size, overlap in chunk_configs:
        chunks = chunk_by_chars(full_text, chunk_size, overlap)
        # 模拟检索质量评估(实际应用中需要接真实向量库)

        score = simulate_recall_quality(chunks, test_queries, k)
        results.append((chunk_size, overlap, score))
        print
(f"chunk_size={chunk_size}, overlap={overlap}, 模拟召回分={score:.2f}")
    
    # 返回最优配置

    best = max(results, key=lambda x: x[2])
    print
(f"\n最优配置: chunk_size={best[0]}, overlap={best[1]}")
    return
 best

一般经验:技术文档每块400-600字效果最好;长篇分析文章每块800-1200字更合适;FAQ类短文本每块100-200字就够了。

踩坑二:向量数据库选型不看规模

Chroma做个人项目很方便,但如果数据量超过100万向量,查询延迟会急剧上升。有人用Milvus存了10条数据,运维成本比Chroma高了10倍。

正确做法:按数据规模选数据库。

预估数据量推荐数据库部署方式运维成本
<10万条文档块Chromapip install极低
10万-500万条QdrantDocker
>500万条MilvusKubernetes/云服务中高

踩坑三:不做混合检索

纯向量检索对语义相似但词汇不同的问题效果很好,但对精确关键词查询(如人名、术语缩写、精确数字)效果差。

解决方案:使用混合检索,同时利用向量检索(语义相似)和关键词检索(BM25):

from qdrant_client.models import (
    SearchParams,
    NamedVector,
    NamedSparseVector,
    SparseVector,
    Filter,
)

# Qdrant混合检索示例

def
 hybrid_search(collection_name: str, query: str, top_k: int = 5):
    """
    混合检索:稀疏向量(BM25关键词) + 稠密向量(语义Embedding)
    """

    # 生成稠密向量(语义检索)

    dense_vec = embeddings.embed_query(query)
    
    # 生成稀疏向量(关键词BM25,模拟实现)

    sparse_vec = compute_sparse_vector(query)  # 简单实现:词频统计
    
    results = client.search(
        collection_name=collection_name,
        query_vector=NamedVector(
            name="dense",
            vector=dense_vec
        ),
        query_sparse_vector=NamedSparseVector(
            name="sparse",
            vector=SparseVector(
                indices=[i for i, v in enumerate(sparse_vec) if v > 0],
                values=[v for v in sparse_vec if v > 0]
            )
        ),
        limit=top_k,
        search_params=SearchParams(
            fusion=SearchParams.Fusion.RECIPROCAL_RANK_FUSION  # RRF融合
        )
    )
    return
 results

踩坑四:Embedding模型和文档语言不匹配

中文文档用了英文优化的Embedding模型,召回准确率会下降30%-50%。Embedding模型的语言能力直接决定召回质量上限,这个坑踩过的人才知道有多疼。

实测对比:对同一批中文技术文档,BGE-large-zh的召回准确率比text-embedding-3-small高出约35%。差距不是来自模型参数量,而是来自训练语料的语言匹配度。

踩坑后总结的模型选择表

文档语言推荐模型备注
纯中文BAAI/bge-large-zh-v1.5首选,开源免费
纯英文OpenAI text-embedding-3-large效果最好
中英混合Jina AI jina-embeddings-v3多语言支持
小语种sentence-transformers多语言模型需要微调

踩坑五:生产环境不设限流

RAG系统里Embedding调用次数直接和成本挂钩。很多人在测试环境跑通了,上生产时被恶意刷了 thousands tokens,API账单爆炸。

解决方案:API限流保护:

import time
from
 threading import Lock
from
 typing import List

class
 RateLimiter:
    """滑动窗口限流器"""

    
    def
 __init__(self, max_calls: int, period_seconds: int = 60):
        self
.max_calls = max_calls
        self
.period = period_seconds
        self
.calls: List[float] = []
        self
.lock = Lock()
    
    def
 wait_if_needed(self):
        with
 self.lock:
            now = time.time()
            # 清理超出窗口的记录

            self
.calls = [t for t in self.calls if now - t < self.period]
            
            if
 len(self.calls) >= self.max_calls:
                # 需要等待

                sleep_time = self.period - (now - self.calls[0])
                if
 sleep_time > 0:
                    time.sleep(sleep_time)
                self
.calls = [t for t in self.calls if now - t < self.period]
            
            self
.calls.append(time.time())


class
 EmbeddingWithLimit:
    """带限流和重试的Embedding封装"""

    
    def
 __init__(self, embeddings, limiter: RateLimiter, max_retries: int = 3):
        self
.embeddings = embeddings
        self
.limiter = limiter
        self
.max_retries = max_retries
    
    def
 embed_documents(self, texts: List[str]):
        self
.limiter.wait_if_needed()
        
        for
 attempt in range(self.max_retries):
            try
:
                return
 self.embeddings.embed_documents(texts)
            except
 Exception as e:
                if
 attempt < self.max_retries - 1:
                    wait = 2 ** attempt
                    print
(f"Embedding失败,{wait}秒后重试: {e}")
                    time.sleep(wait)
                else
:
                    raise


# 使用限流

limiter = RateLimiter(max_calls=100, period_seconds=60)  # 每分钟最多100次
safe_embeddings = EmbeddingWithLimit(embeddings, limiter)

踩坑六:不做召回评估,靠感觉优化

优化RAG最怕的就是凭感觉改参数,改来改去效果没提升。必须用数据驱动,用实际指标评估。

推荐评估指标:

  • HitRate@k:前k个召回结果中包含正确答案的比例。简单直接。
  • MRR(Mean Reciprocal Rank):正确结果排名的倒数均值。考虑排序质量。
  • 上下文利用率:召回的上下文中有多少真正回答了问题。
from typing import List, Tuple, Dict

def
 evaluate_rag_system(
    qa_chain,
    test_cases: List[Tuple[str, List[str]]]
) -> Dict[str, float]:
    """
    评估RAG系统质量
    
    参数:
        qa_chain: RAG问答链
        test_cases: [(问题, 期望答案关键词列表)] 的列表
    """

    hits = 0
    mrr_sum = 0.0
    
    for
 query, expected_keywords in test_cases:
        result = qa_chain({"query": query})
        answer = result["result"]
        
        # 判断是否命中(答案中包含期望关键词)

        hit = any(kw in answer for kw in expected_keywords)
        if
 hit:
            hits += 1
            mrr_sum += 1.0  # 简化:命中就是1.0
        
        print
(f"问题: {query}")
        print
(f"回答: {answer[:150]}...")
        print
(f"命中: {'✓' if hit else '✗'}\n")
    
    n = len(test_cases)
    hit_rate = hits / n
    avg_mrr = mrr_sum / n
    
    print
("=" * 40)
    print
(f"HitRate@{n}: {hit_rate:.2%}")
    print
(f"MRR: {avg_mrr:.2f}")
    
    return
 {"hit_rate": hit_rate, "mrr": avg_mrr}

# 测试案例

test_cases = [
    ("embedding模型哪个适合中文知识库?", ["BGE", "中文", "开源"]),
    ("Qdrant如何配置混合检索?", ["稀疏向量", "RRF", "融合"]),
    ("chunk大小怎么选择?", ["400", "600", "800"]),
]

results = evaluate_rag_system(qa_chain, test_cases)

五、生产级架构:从小到大的演进路径

个人项目跑通之后,往生产走需要考虑更多工程要素。

文档版本管理:知识库更新后,旧版本要能追溯和回滚。可以给每个文档块加上versioncreated_at字段。

增量索引:新增文档时不需要全量重写向量,只写入增量部分。向量数据库支持upsert操作。

多租户隔离:不同用户/团队的数据要做存储隔离。最简单的方案是每个租户一个collection,最安全。

监控与告警:需要监控的指标包括——Embedding API错误率、查询延迟P99、向量库存储使用量、每日查询次数。

缓存层:对于高频Query,可以把回答结果缓存到Redis,减少LLM调用次数。缓存TTL设为1小时左右。

完整生产架构推荐组合

层次推荐工具
文档解析unstructured + 自定义PDF解析器
向量存储Qdrant(中小规模)或Milvus(大规模)
编排框架LangChainLlamaIndex
LLM路由根据Query复杂度自动选择模型
缓存Redis(Query-Answer缓存,TTL=1h)
监控Prometheus + Grafana

六、从0到1的实战路径

如果你是第一次搭RAG知识库,按这个顺序来,少走弯路:

第一阶段(1-2天):用Chroma + OpenAI Embedding + LangChain,跑通最简单的RAG流程,先让系统跑起来、看到效果。

第二阶段(3-5天):接入Qdrant,换成BGE中文Embedding,加Cohere重排序,跑基准评估,看实际召回质量。

第三阶段(1-2周):优化chunk策略,做混合检索,补全限流和监控,达到生产级质量。

第四阶段(持续迭代):根据实际使用数据迭代优化,重点关注HitRate和用户满意度,持续调优。


总结

AI知识库的核心竞争不在大模型,而在召回质量。Embedding模型选对语言、chunk策略匹配文档特点、向量数据库规模对应数据量,这三件事做好,就解决了80%的常见问题。

剩下20%靠的是持续评估和数据驱动优化。RAG不是一个搭好就完事的系统,它需要根据实际使用情况不断调整参数、更新索引、优化Prompt。

理解数据流、掌握工具链、会用数据评估,是搭好知识库的三个关键能力。工具链每年都在变,模型每年都在更新,但RAG的核心原理不变:找准、找对、拼好上下文。掌握这个本质,不管用什么新技术,系统都能搭对。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 23:25:36 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/639949.html
  2. 运行时间 : 0.262834s [ 吞吐率:3.80req/s ] 内存消耗:4,869.84kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=37c9449b8c08220899d74657cf186a38
  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.000552s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000905s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000960s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002942s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000507s ]
  6. SELECT * FROM `set` [ RunTime:0.003178s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000606s ]
  8. SELECT * FROM `article` WHERE `id` = 639949 LIMIT 1 [ RunTime:0.010025s ]
  9. UPDATE `article` SET `lasttime` = 1783092336 WHERE `id` = 639949 [ RunTime:0.009169s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000401s ]
  11. SELECT * FROM `article` WHERE `id` < 639949 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.005955s ]
  12. SELECT * FROM `article` WHERE `id` > 639949 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.039486s ]
  13. SELECT * FROM `article` WHERE `id` < 639949 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000732s ]
  14. SELECT * FROM `article` WHERE `id` < 639949 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.032368s ]
  15. SELECT * FROM `article` WHERE `id` < 639949 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.074610s ]
0.264521s