1、 在一张表test中建立了联合索引(a,b,c),使用下面的sql语句问那些语句用到了索引?
根据索引的最左匹配原则和优化策略,其中 1和2会用到索引
2、 mysql索引为何是最左匹配?
Mysql索引使用了B+树数据结构,当b+树的数据项是复合的数据结构,比如(a,b,c)的时候,b+数是按照从左到右的顺序来建立搜索树的,比如当(a1,b1,c1)这样的数据来检索的时候,b+树会优先比较a1来确定下一步的所搜方向,如果a相同再依次比较b和c,最后得到检索的数据;但当(b1,c1)这样的没有a的数据来的时候,b+树就不知道下一步该查哪个节点。
3、 mysql索引下推是什么意思?
索引下推(Index Condition Pushdown,索引条件下推,简称ICP),是MySQL5.6版本的新特性,它可以在对联合索引遍历过程中,对索引中包含的所有字段先做判断,过滤掉不符合条件的记录之后再回表,能有效的减少回表次数。
4、 哪些情况会出现索引失效?
? 当使用左或者左右模糊匹配的时候,也就是 like %xx 或者 like %xx%这两种方式都会造成索引失效;
? 在查询条件中对索引列使用函数,就会导致索引失效。
? 在查询条件中对索引列进行表达式计算,也是无法走索引的。
? MySQL 在遇到字符串和数字比较的时候,会自动把字符串转为数字,然后再进行比较。如果字符串是索引列,而条件语句中的输入参数是数字的话,那么索引列会发生隐式类型转换,由于隐式类型转换是通过 CAST 函数实现的,等同于对索引列使用了函数,所以就会导致索引失效。
? 联合索引要能正确使用需要遵循最左匹配原则,也就是按照最左优先的方式进行索引的匹配,否则就会导致索引失效。
? 在 WHERE 子句中,如果在 OR 前的条件列是索引列,而在 OR 后的条件列不是索引列,那么索引会失效。
5、 使用jdbc访问数据库出现了乱码是什么原因?怎么解决?
乱码是由于字符编码设置不正确或不一致导致的。为了避免乱码问题,我们应该确保应用程序和MySQL使用相同的字符编码,并且在创建表和查询数据时,确保字符集和排序规则一致。
通过正确设置字符编码和字符集,我们可以避免乱码问题,并确保在MySQL中存储和读取数据时能够正确地处理各种字符。
更多mysql面试题地址
(https://download.csdn.net/download/gwc791224/88682646)