索引
如果没有索引,就是将数据库中的内容全部取出,和查询结果一一对比,造成大量I/O。
如果有索引就可以大大加快查询速度。
建立索引
ALTER TABLE <table_name> ADD INDEX <index_name>(c_name);
CREATE INDEX <index_name> ON <table_name>(c_name);
一些字段不适合创建索引,比如性别,这个字段存在大量的重复记录无法享受索引带来的速度加成,甚至会拖累数据库,导致数据冗余和额外的 CPU 开销。
视图
视图是从一个或多个表中导出来的表,是一种虚拟存在的表。它就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据。
可以把视图理解为一个虚拟的表.
建立视图
CREATE VIEW <v_name> (v1,v2,v3) AS SELECT <c1,c2,c3> FROM <table_name>;
文件导入导出
由于导入导出大量数据都属于敏感操作,根据 mysql 的安全策略,导入导出的文件都必须在指定的路径下进行,在 mysql 终端中查看路径变量,然后将文件拷入该路径:
show variables like '%secure%';
数据保存进表
LOAD DATA INFILE 'file_path file_name' INTO TABLE <table_name>;
数据导出
SELECT <c_name> INTO OUTFILE 'file_path file_name' FROM <table_name>;
数据库备份恢复
备份与导出的区别:导出的文件只是保存数据库中的数据;而备份,则是把数据库的结构,包括数据、约束、索引、视图等全部另存为一个文件。
mysqldump备份操作在终端中完成。
备份
mysqldump -u root <database_name> > <backup_name>
mysqldump -u root <database_name> <table_name> > <backup_name>
恢复
source <path name> //在sql里恢复
mysql -u root <test> < <bak.sql> //在终端恢复