药品医保编码查询神器:25 万条数据从”卡到崩溃”到”毫秒秒查”的绿色版工具
药品医保编码查询神器:25 万条数据从"卡到崩溃"到"毫秒秒查"的绿色版工具
一个 22MB、25.7 万行的药品 Excel,每次查询都要卡好几秒甚至几十秒。本文分享如何用一个免安装、免联网、免服务器的绿色版工具,把查询速度从"数秒级"提升到"毫秒级",并支持单击一键复制医保编码。
目录
一、问题:Excel 为什么这么卡
二、方案:SQLite 索引 + 原生窗口 + 单文件打包
三、核心功能演示
四、使用方式:零门槛
五、效果验证:前后对比
六、技术要点小结
七、总结
一、问题:Excel 为什么这么卡
药品医保目录的原始数据是一份 Excel 工作簿,规模相当可观:
| 指标 | 数值 |
| 总行数 | 257,617 行 |
| 字段数 | 19 列 |
| 文件体积 | 22.2 MB |
| 字段类型 | 类型、编号、名称、规格、单价、医保类别、供应商等 |
问题根源在于 Excel 的查询机制:无论是 Ctrl+F 查找还是自动筛选,都会在内存中对整表做逐行扫描。25 万行数据意味着每次操作都要遍历全部单元格,加上公式重算和界面刷新,就表现为明显的卡顿——轻则几秒,重则直接"未响应"。
更麻烦的是使用场景:这台机器往往在内网 / 专网环境,既不能私自搭建服务器,也不能联网安装软件。这决定了解决方案必须满足两个硬约束:
- 不能是 Web / 服务端方案(无服务器、无浏览器依赖)
- 必须是绿色免安装(拷贝即用)
二、方案:SQLite 索引 + 原生窗口 + 单文件打包
针对上述痛点,方案分三步走:
- 数据落库:把 Excel 全量导入 SQLite,并在名称、编号、供应商、药品类别等高频查询字段上建立索引。SQLite 的 B-Tree 索引让"按条件查找"从全表扫描变成索引定位,性能有数量级的提升。
- 原生窗口:用 Python 自带的 Tkinter 写查询界面,无需浏览器、无需任何运行时环境,双击即可打开。
- 单文件打包:用 PyInstaller 把程序和 Python / Tkinter 运行时一起打包成 exe,连同数据库文件放入一个文件夹,形成免安装绿色版——整个文件夹拷贝到内网电脑就能用。
三、核心功能演示
1. 毫秒级多条件查询
主界面就是一个干净的搜索框 + 结果表格。输入药品名称、编号、供应商、规格任意条件即可检索,还支持"字段"下拉框限定搜索列、"药品类别"下拉框筛选,以及"全部字段"模糊搜索。图 1:药品查询系统主界面
2. 单击一行,自动复制医保编码
这是最贴心的一个细节:单击结果中的任意一行,软件会自动把该药品的"编号"(医保编码)复制到剪贴板,并在鼠标旁弹出一个绿色提示气泡"✓ 已复制编号:XXX",1.5 秒后自动消失——无需手动 Ctrl+C,也无需确认弹窗打断操作,用户只需知道"已经复制好了"。图 2:单击行自动复制医保编码,绿色提示自动消失
3. 双击一行,查看完整 19 个字段
双击任意结果行,会弹出完整详情窗口,展示该药品全部 19 个字段(类型、编号、名称、单位、规格、单价、发票项目名称、药品类别、自付比例、是否医保、是否基药等),方便核对完整信息。图 3:双击查看完整字段详情
四、使用方式:零门槛
绿色版整个文件夹结构一目了然:
| 文件 | 说明 |
| 药品查询 .exe | 主程序,双击运行 |
| 药品数据库 .db | 已建索引的 SQLite 数据库 |
| _internal/ | Python / Tkinter 运行时(打包自带) |
| 使用说明 .txt | 使用说明 |
三步上手:
- 把整个文件夹拷贝到目标电脑(内网 / 专网均可)
- 双击药品查询.exe
- 输入药品名称 / 编号 / 供应商,回车即出结果
全程不需要安装、不需要联网、不需要浏览器、不需要服务器。第一次启动约 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」即可获取。无需下载在线查看,视频原画享倍速播放

