在不同数据库中,“临时表索引怎么建”基本思路都和普通表一样,只是建表方式/作用域/生命周期略有差异。下面按常见数据库分别说明。
CREATE TEMPORARY TABLE tmp_user (
id INT,
name VARCHAR(50),
INDEX idx_name (name)
);
CREATE TEMPORARY TABLE tmp_user (
id INT,
name VARCHAR(50)
);
CREATE INDEX idx_name ON tmp_user(name);
✅ 说明:
Oracle 是先建全局临时表结构,再插入数据
CREATE GLOBAL TEMPORARY TABLE tmp_user (
id NUMBER,
name VARCHAR2(50)
) ON COMMIT DELETE ROWS;
CREATE INDEX idx_tmp_user_name ON tmp_user(name);
✅ 说明:
CREATE TABLE #tmp_user (
id INT,
name VARCHAR(50)
);
CREATE INDEX IX_tmp_user_name ON #tmp_user(name);
CREATE TABLE ##tmp_user (
id INT,
name VARCHAR(50)
);
CREATE INDEX IX_tmp_user_name ON ##tmp_user(name);
✅ 区别:
#:仅当前会话##:所有会话可见CREATE TEMPORARY TABLE tmp_user (
id INT,
name TEXT
);
CREATE INDEX idx_tmp_user_name ON tmp_user(name);
✅ 会话结束自动删除
只建必要索引
在以下字段建索引
数据量大才值得建
避免建太多索引
❌ 临时表不能建索引(错误)
❌ 临时表索引会永久占用空间(多数数据库不会)
❌ 所有字段都建索引(性能反而差)
如果你能告诉我:
我可以给你一个最优索引方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。