6.使用索引时的注意事项
- like以通配符%开头索引失效
- 当全表扫描比走索引查询的快的时候,会使用全表扫描,而不走索引
- 字符串不加单引号索引会失效
- where中索引列使用了函数(例如substring字符串截取函数)
- where中索引列有运算(用了< or > 右边的索引会失效,用<= or >= 索引不会失效)
- is null可以走索引,is not null无法使用索引(取决于某一列的具体情况)
- 复合索引没有用到左列字段(最左前缀法则,如果没用用到最左列索引,或中间跳过了某列有索引的列,索引会部分失效)
- 条件中有or,前面的列有索引,后面的列没有,索引会失效。想让索引生效,只能将or条件中的每个列都加上索引
四、执行计划
刚刚在测试索引效果的时候反复提到执行计划,那么执行计划是什么呢?
MySQL的执行计划(Execution Plan)是通过使用EXPLAIN关键字来获取的。执行计划为查询优化器提供了关于如何执行查询的详细信息,包括表的读取顺序、使用的索引、连接方法等。以下是在MySQL中获取执行计划的基本步骤:
- 准备一个查询语句:首先,准备一个需要获取执行计划的SELECT语句。
- 使用EXPLAIN关键字:在查询语句前加上EXPLAIN关键字,形成EXPLAIN SELECT语句,例如:
EXPLAIN SELECT column1, column2, ... FROM table_name WHERE condition;
- 执行查询并查看执行计划:执行上述EXPLAIN SELECT语句,将会返回一个Execution Plan,即查询的执行计划。执行计划是一个结果集,包含了查询优化器根据查询语句生成的执行计划详细信息。例如,执行计划可能包含以下列信息:
- id: 查询块的唯一标识符。
- select_type: 查询的类型,如简单查询、联接查询、子查询等。
- table: 查询涉及的表名。
- type: 表示MySQL用于执行查询的访问方式,如全表扫描、索引扫描、范围扫描等。
- possible_keys: 可能使用的索引列表。
- key: 实际使用的索引。
- rows: 查询过程中扫描的行数估计。
- extra: 其他附加信息,如是否使用临时表、是否使用文件排序等。
- 通过分析执行计划,你可以了解查询语句的性能瓶颈,是否使用了适当的索引、连接方式等。根据执行计划的输出,可以进行索引优化、查询重写等操作来改进查询性能。
请注意,执行计划中的具体信息会根据查询语句和数据库架构而有所不同。因此,理解和分析执行计划需要熟悉MySQL查询优化的基本原则和技巧。使用EXPLAIN关键字能够帮助你更好地优化你的查询,并提升MySQL的性能。
五、导入导出
1.使用工具,导入导出数据
导入👆👆
1.选择需要导入表存放的库右击➡运行sql文件➡选择sql文件即可
导出👇👇
1.选择需要导出的表右击➡转储SQL文件➡结构和数据/仅结构
2.根据自己的需求存放即可
2.使用mysqldump导入导出
导入👆👆
找到自己安装MySQL的安装位置进入bin目录执行cmd
执行下行代码即可导入文件
mysql -u [username] -p [database_name] < [input_file.sql]
[username]
:数据库的用户名。[database_name]
:要导入的数据库的名称。[input_file.sql]
:要导入的SQL文件的完整路径和文件名。
注意:在输入命令后,你将会被要求输入密码。输入正确的密码后,导入过程将自动进行, 而且必须先手动创建数据库才可对相应的数据库进行导入操作否则找不到指定的数据库而报错。
导出👇👇
找到自己安装MySQL的安装位置进入bin目录执行cmd
执行下行代码即可导出文件
mysqldump -u [username] -p [database_name] > [output_file.sql]
[username]
:数据库的用户名。[database_name]
:要导出的数据库的名称。[output_file.sql]
:导出的SQL文件的保存路径和文件名。
3.LOAD DATA INFILE
LOAD DATA INFILE是MySQL提供的一种机制,可用于将数据从文件导入到数据库表中,或将数据库表中的数据导出到文件中。使用LOAD DATA INFILE可以更高效地处理大量数据的导入和导出操作。
导入👆👆
1.执行导入语句
load data infile '文件路径' into table 表名(字段);
注意:必须先有符合的表结构以便与表的列对应。
导出👇👇
1.我们先要设置我们MySQL对盘符的访问权限
找到安装目录下的my.ini文件打开并输入secure_file_priv='运行访问路径名即可'
如果不配置就会出现以下的错误提示
2.语句导出 select * from 表名 into outfile '/文件名.sql';
如果这篇文章对你有帮助的话,还请点个赞吧!!