Ctrl+Shift+D(Mac为Cmd+Shift+D)是搜表名最快最稳的方式,它由DBeaver自动适配各数据库元数据接口,不依赖information_schema权限,响应快、结果全、支持通配符和正则匹配。

直接搜表名,用 Ctrl+Shift+D(Mac 是 Cmd+Shift+D)打开数据库导航器,输关键词就行——这是最快、最稳的方式,不用写 SQL,也不依赖权限查 information_schema。
为什么 Ctrl+Shift+D 比 SQL 查 information_schema 更可靠
手动写 SQL 查表名(比如 SELECT table_name FROM information_schema.tables)看似通用,但实际常踩坑:Oracle 需要 all_tables 或 dba_tables,权限不够就空结果;PostgreSQL 里大小写敏感,LIKE 'user%' 可能漏掉 Users;MySQL 8.0+ 默认不返回 mysql 系统库的表。而 Ctrl+Shift+D 背后由 DBeaver 自动适配驱动逻辑,对不同数据库走各自元数据接口,过滤发生在客户端,不发多余查询,响应快、结果全、不报错。
- 它默认只显示当前已连接且已展开的模式(schema),避免海量系统对象干扰
- 输入
user%或%log%会自动转成正则匹配,支持通配符(%匹配任意长,_匹配单字符) - 如果搜不到,先检查左侧面板是否已展开目标数据库连接——未展开的库不会参与搜索
Search in Tables(Ctrl+Shift+H)适合“值反查表”,不是搜表名
很多人混淆 Ctrl+Shift+H 和 Ctrl+Shift+D:Ctrl+Shift+H 的真实用途是“在表数据里搜某个字符串值”,比如你想找 '2026-11-04' 出现在哪张表哪一行,它会逐表扫描符合条件的列(VARCHAR、TEXT 等),生成一堆 SELECT ... WHERE column LIKE '%...%' 并执行。它不查表名、不查结构,耗时长、锁表风险高,且必须提前选中数据库连接才能启用。搜表名时误点这个,只会卡住或报错 No active connection selected。
- 正确入口:右键数据库连接 →
Tools > Search in Tables - 仅当你要定位某条业务数据(如订单号、手机号、错误码)落在哪张表时才用它
- 若数据库大、文本列多,建议勾选
Data types限定为VARCHAR和TEXT,关掉CHAR和CLOB避免慢查
键盘直跳(首字母跳转)在已展开模式下最高效
当你已经展开某个数据库下的 public(PostgreSQL)、dbo(SQL Server)或 APP_SCHEMA(Oracle),把鼠标点进左侧对象树任意位置,直接敲表名首字母就能跳转——这比输完整名还快,尤其适合命名规范的项目(如 order_*、user_*、log_*)。它本质是树节点的 findNextMatch 行为,不触发网络请求,零延迟。
- 连续敲字母可追加匹配,比如敲
o→r→d,会从orders跳到order_items - 对大小写不敏感,但区分下划线:敲
user不会跳到UserProfile(驼峰命名需切到搜索框) - 如果敲完没反应,说明当前展开的模式里根本没匹配表——换模式再试,别硬敲
全局对象搜索(Search > Database Objects)慎用,容易漏库
Search > Database Objects(快捷键 Ctrl+H)是唯一能跨多个已连接数据库搜表名的功能,但它默认只搜“当前激活的连接”及其子节点,除非你手动勾选所有目标连接。更关键的是:它依赖 DBeaver 缓存的元数据快照,不是实时拉取——如果你刚建了一张表,但没刷新连接(F5),它就搜不到。
- 启用前务必右键各数据库连接 →
Refresh,否则结果滞后 - 类型过滤器选
Table,别选All objects,否则混入视图、函数,干扰判断 - 搜索词带冒号可限定类型,例如输入
table:user或view:summary,但注意语法必须紧挨着,不能有空格
真正难的不是找到表名,而是确认它属于哪个 schema、哪个数据库实例——Ctrl+Shift+D 搜索结果里完整显示 db_name > schema_name > table_name 路径,这点千万别忽略。有些团队共用一个连接配置但分库命名,表名重复时只看名字根本分不清。











