面试中遇到问MySQL的问题
发布时间2022-12-24 14:14:13【MySql】2人已围观
简介 简单介绍Mysql索引,Mysql如何创建权限管理表,以及MySql如何优化
MySql有哪些索引
1.普通索引 2.唯一索引 3.主键索引 4.组合索引(联合索引) 5.全文索引
MySql数据表查询时什么时候索引会失效
1.对于创建的多列索引(复合索引),不是使用的第一部分就不会使用索引 alter table 表名称 add index my_index(name, age) //name左边的列,age右边的列 select * from 表名称 where name = 'aaa' //会用到索引 select * from 表名称 where age = 18 //不会使用索引 2.对于使用 like 查询, 查询如果是 "%aaa" 不会使用索引,而 "aaa%" 会使用到索引。 select * from student where name like 'aaa%' //会用到索引 select * from student where name like '%aaa' //不会使用索引 3.如果条件中有or,有条件没有使用索引,即使其中有条件带索引也不会使用;所以尽量使用in,这个是会使用索引的。 4.如果列类型是字符串,那么一定要在条件中使用引号引用起来,否则不使用索引。 select * from table where name='zhangsan'; //使用索引 select * from table where name= zhangsan; //没有使用索引 5.如果mysql认为全表扫面要比使用索引快,则不使用索引。
MySql主键索引和唯一索引的区别
1.主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 2.主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 3.唯一性索引列允许空值,而主键列不允许为空值。 4.主键列在创建时,已经默认为空值 + 唯一索引了。 5.主键可以被其他表引用为外键,而唯一索引不能。 6.一个表最多只能创建一个主键,但可以创建多个唯一索引。 7.主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。 8.在RBO模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。
Innodb和Myisam的区别
1.innodb支持事务,而myisam不支持事务。 2.innodb支持外键,而myisam不支持外键。 3.innodb是行锁,而myisam是表锁(每次更新增加删除都会锁住表)。 4.innodb和myisam索引都是基于b+树,但具体实现不一样,innodb的b+树的叶子节点是存放数据的,myisam的b+树的叶子节点是存放指针的。 5.innodb是聚簇索引,必须要有主键,一定会基于主键查询,但是辅助索引就会查询两次,myisam是非聚簇索引,索引和数据是分离的,索引里保存的是数据地址的指针,主键索引和辅助索引是分开的。 6.innodb不存储表的行数,所以select count( * )的时候会全表查询,而myisam会存放表的行数,select count(*)的时候会查的很快。 总结:mysql默认使用innodb,如果要用事务和外键就使用innodb,如果这张表只用来查询,可以用myisam。如果更新删除增加频繁就使用innodb。
MySql如何优化
SQL语句的优化: 1、尽量避免使用子查询 2、避免函数索引 3、用IN来替换OR 4、LIKE前缀%号、双百分号、_下划线查询非索引列或*无法使用到索引,如果查询的是索引列则可以 5、读取适当的记录LIMIT M,N,而不要读多余的记录 6、避免数据类型不一致 7、分组统计可以禁止排序sort,总和查询可以禁止排重用union all 8、避免随机取记录 9、禁止不必要的ORDER BY排序 10、批量INSERT插入 11、不要使用NOT等负向查询条件 12、尽量不用select * 13、区分in和exists 索引的优化: 1、Join语句的优化 2、避免索引失效
赞一个! (1)
上一篇:MySql常用sql语句
下一篇:如何检查sql语句执行效率