MyBatis中Like语句使用方式及解决索引失效

MyBatis中Like语句使用方式及解决索引失效

知识点:mybatis使用#和$区别,mybatis使用concat,使用bind。使用like如何优化,使索引不失效。知识点就这些,也没有必要再写一遍,我从网上把知识点具体使用的“轮子”拷贝过来,但正确性未验证,请注意甄别。

1 mybatis中如何使用like(未验证,摘抄自 链接 )

 
  1. oracle数据库:

  2. SELECT

  3. *

  4. FROM

  5. user

  6. WHERE

  7. name like CONCAT('%',#{name},'%')

  8.  
  9. 扫描二维码关注公众号,回复: 2494529 查看本文章
  10.  
  11. SELECT

  12. *

  13. FROM

  14. user

  15. WHERE

  16. name like '%'||#{name}||'%'

  17.  
  18. SQLServer数据库:

  19.  
  20. SELECT

  21. *

  22. FROM

  23. user

  24. WHERE

  25. name like '%'+#{name}+'%'

  26.  
  27. mysql数据库:

  28.  
  29. SELECT

  30. *

  31. FROM

  32. user

  33. WHERE

  34. name like CONCAT('%',#{name},'%')

  35.  
  36. DB2数据库:

  37.  
  38. SELECT

  39. *

  40. FROM

  41. user

  42. WHERE

  43. name like CONCAT('%',#{name},'%')

  44.  
  45.  
  46. SELECT

  47. *

  48. FROM

  49. user

  50. WHERE

  51. name like '%'||#{name}||'%'

2 like模糊查询索引失效

哪些场景索引失效?

 
  1. 1. like %keyword 索引失效,使用全表扫描。但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描。

  2. 2. like keyword% 索引有效。

  3. 3. like %keyword% 索引失效,也无法使用反向索引。

解决方法:1 Select主键  2 覆盖索引法  3 全文索引法(全文索引,只对MyISAM引擎有用。主要是针对对文件,文本的检索。)  4 使用全文检索引擎工具包 (摘自 链接 。我以前用过覆盖索引和主键索引,其他两种未用过)

**我博客所有文章目录:http://blog.csdn.net/wabiaozia

3 补充

mybatis中使用bind代替concat(摘自刘增辉 mybatis从入门到精通)

猜你喜欢

转载自blog.csdn.net/hu_jinghui/article/details/81304870