JD *_*cks 5 mysql indexing temp-tables
我正在创建一个带有如下查询的临时表:
CREATE TEMPORARY TABLE temp_table
SELECT * FROM regular_table
WHERE 1
Run Code Online (Sandbox Code Playgroud)
但是regular_table在某些字段上有FULLTEXT索引.我尝试在新的临时表上进行FULLTEXT搜索,我收到一条错误,告诉我"无法找到与列列表匹配的FULLTEXT索引 ".因此,索引不会复制到新表.有没有办法强迫这个?
谢谢.
Pis*_*3.0 10
您可以使用CREATE TEMPORARY TABLE temp_table LIKE regular_table,但这将创建所有索引,因此当您这样做时INSERT INTO temp_table SELECT * FROM regular_table,将重建索引 - 这可能会很长.
或者,您可以创建表并在之后添加索引:
CREATE TEMPORARY TABLE temp_table
ALTER TABLE temp_table ADD FULLTEXT INDEX (foo,bar,baz)
INSERT INTO temp_table SELECT * FROM regular_table
Run Code Online (Sandbox Code Playgroud)
但是,每次插入时都会更新索引.
可能最有效的方法是创建临时表,然后插入所有,构建索引:
CREATE TEMPORARY TABLE temp_table
ALTER TABLE temp_table ADD FULLTEXT INDEX (foo,bar,baz)
ALTER TABLE temp_table DISABLE KEYS
INSERT INTO temp_table SELECT * FROM regular_table
ALTER TABLE temp_table ENABLE KEYS
Run Code Online (Sandbox Code Playgroud)
同样,您将不得不等待索引构建,除非它将在最后一个ALTER语句的一个块中发生.
| 归档时间: |
|
| 查看次数: |
5622 次 |
| 最近记录: |