药品医保编码查询神器:25 万条数据从”卡到崩溃”到”毫秒秒查”的绿色版工具

药品医保编码查询神器:25 万条数据从"卡到崩溃"到"毫秒秒查"的绿色版工具

一个 22MB、25.7 万行的药品 Excel,每次查询都要卡好几秒甚至几十秒。本文分享如何用一个免安装、免联网、免服务器的绿色版工具,把查询速度从"数秒级"提升到"毫秒级",并支持单击一键复制医保编码。

目录

一、问题:Excel 为什么这么卡

二、方案:SQLite 索引 + 原生窗口 + 单文件打包

三、核心功能演示

四、使用方式:零门槛

五、效果验证:前后对比

六、技术要点小结

七、总结

一、问题:Excel 为什么这么卡

药品医保目录的原始数据是一份 Excel 工作簿,规模相当可观:

指标 数值
总行数 257,617  行
字段数 19  列
文件体积 22.2 MB
字段类型 类型、编号、名称、规格、单价、医保类别、供应商等

 

问题根源在于 Excel 的查询机制:无论是 Ctrl+F 查找还是自动筛选,都会在内存中对整表做逐行扫描。25 万行数据意味着每次操作都要遍历全部单元格,加上公式重算和界面刷新,就表现为明显的卡顿——轻则几秒,重则直接"未响应"。

更麻烦的是使用场景:这台机器往往在内网 / 专网环境,既不能私自搭建服务器,也不能联网安装软件。这决定了解决方案必须满足两个硬约束:

  • 不能是 Web / 服务端方案(无服务器、无浏览器依赖)
  • 必须是绿色免安装(拷贝即用)

二、方案:SQLite 索引 + 原生窗口 + 单文件打包

针对上述痛点,方案分三步走:

  1. 数据落库:把 Excel 全量导入 SQLite,并在名称、编号、供应商、药品类别等高频查询字段上建立索引。SQLite 的 B-Tree 索引让"按条件查找"从全表扫描变成索引定位,性能有数量级的提升。
  2. 原生窗口:用 Python 自带的 Tkinter 写查询界面,无需浏览器、无需任何运行时环境,双击即可打开。
  3. 单文件打包:用 PyInstaller 把程序和 Python / Tkinter 运行时一起打包成 exe,连同数据库文件放入一个文件夹,形成免安装绿色版——整个文件夹拷贝到内网电脑就能用。

三、核心功能演示

1. 毫秒级多条件查询

主界面就是一个干净的搜索框 + 结果表格。输入药品名称、编号、供应商、规格任意条件即可检索,还支持"字段"下拉框限定搜索列、"药品类别"下拉框筛选,以及"全部字段"模糊搜索。图 1:药品查询系统主界面

2. 单击一行,自动复制医保编码

这是最贴心的一个细节:单击结果中的任意一行,软件会自动把该药品的"编号"(医保编码)复制到剪贴板,并在鼠标旁弹出一个绿色提示气泡"✓ 已复制编号:XXX",1.5 秒后自动消失——无需手动 Ctrl+C,也无需确认弹窗打断操作,用户只需知道"已经复制好了"。图 2:单击行自动复制医保编码,绿色提示自动消失

3. 双击一行,查看完整 19 个字段

双击任意结果行,会弹出完整详情窗口,展示该药品全部 19 个字段(类型、编号、名称、单位、规格、单价、发票项目名称、药品类别、自付比例、是否医保、是否基药等),方便核对完整信息。图 3:双击查看完整字段详情

四、使用方式:零门槛

绿色版整个文件夹结构一目了然:

文件 说明
药品查询 .exe 主程序,双击运行
药品数据库 .db 已建索引的  SQLite  数据库
_internal/ Python / Tkinter  运行时(打包自带)
使用说明 .txt 使用说明

 

三步上手

  1. 把整个文件夹拷贝到目标电脑(内网 / 专网均可)
  2. 双击药品查询.exe
  3. 输入药品名称 / 编号 / 供应商,回车即出结果

全程不需要安装、不需要联网、不需要浏览器、不需要服务器。第一次启动约 2~5 秒加载数据库,之后所有查询均为毫秒级。

五、效果验证:前后对比

改造前后的查询体验对比如下:

查询场景 之前( Excel ) 之后(绿色版)
搜 " 阿莫西林 " ( 1876  条) 卡顿数秒 ~ 数十秒 5.4 毫秒
搜供应商关键词 卡顿,可能无响应 毫秒级
名称  +  类别组合筛选 基本无法操作 毫秒级
复制某条医保编码 手动定位  + Ctrl+C 单击即复制  +  自动提示

 

数据规模 25.7 万行全部保留,查询精度不打折扣,只是把"慢"这一环彻底优化掉了。

六、技术要点小结

  • SQLite + 多字段索引:这是性能提升的核心,把全表扫描降为索引查找。
  • Tkinter 原生界面:零外部依赖,clipboard_append 写剪贴板,无边框 Toplevel + after() 实现自动消失的提示气泡。
  • PyInstaller 打包:--windowed --add-data 参数把数据库一并打包,双击即用。
  • 绿色分发:整个文件夹约 200MB,U 盘或内网共享即可传递,符合专网"不搭服务器"的合规要求。

七、总结

这个工具解决的其实是一个很常见、却容易被忽视的痛点:当"业务数据"大到 Excel 扛不住时,未必需要上数据库、上系统,一个带索引的 SQLite + 一个轻量原生窗口,就能把体验拉满。而"单击复制 + 自动消失提示"这类细节,恰恰是高频查询场景下最影响效率的地方。

如果你手上也有类似"超大 Excel 查询慢"的场景,这套"SQLite 索引 + 绿色版 exe"的思路,值得直接复用。

链接:https://pan.xunlei.com/s/VP-6kyBCf7WkPekYTZmqEim3A1?pwd=g5zc# 复制这段内容后打开「手机迅雷 App」即可获取。无需下载在线查看,视频原画享倍速播放

THE END