当前位置:Gxlcms > 数据库问题 > mysql百万的数据快速创建索引

mysql百万的数据快速创建索引

时间:2021-07-01 10:21:17 帮助过:18人阅读

TABLE `users` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL, `add_time` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1000001 DEFAULT CHARSET=latin1;

尝试在navicat中使用 into outfile导出数据的时候出现错误:

select * from users into outfile users.txt; //users.txt文件在mysql的dat

如下图:

技术分享

上网查了一下是mysql设置的权限,可以使用

show variables like ‘%secure%‘;查看 secure-file-priv 当前的值是什么?

可以看到secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录的。 当secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制.

技术分享

导出的数据必须是这个值的指定路径才可以导出,默认有可能是NULL(我这里查看的是null)就代表禁止导出,所以需要设置一下

由于我使用的是phpstudy,mysql安装路径下的my.ini文件,设置一下路径:

技术分享

注意:路径名加双引号" "
重启后再次执行错误依旧.....

mysql.cnf中没有对这个参数进行设定,就说明这个参数默认便是null 所以再尝试修改mysql.cnf中的[mysqld]加入secure_file_priv =  最终如下: 技术分享

 

再次重启mysql
技术分享

技术分享

可以看到users.txt生成在同级test数据库目录。。。
接着执行:

truncate  users;

创建索引:

create index name using BTREE on users(name);

索引的方式有:BTREE、RTREE、HASH、FULLTEXT、SPATIAL,这里不再赘述他们的区别,网上有很多关于这块的介绍啦

导入文件到相应表users。

load data infile users.txt into table users;

技术分享

此方式在write 锁住情况下,或对外服务暂停时使用,线上不可能直接这样玩了。。

mysql百万的数据快速创建索引

标签:字段   开始   color   nav   div   rom   charset   weight   prim   

人气教程排行