数据库杂录

  1. 数据库表除主键列外当需要保证单列值或多列组合值插入的数据是唯一参数时最好给其加上唯一索引,以保证数据的唯一性
  2. 使用联表查询时在用到 order by 要注意如果被排序的字段没有索引,那么此语句的执行时间将可能超时,可以用主键排序或者为排序列添加索引等
  3. limit 1 可以用来优化条件查询结果确定只有一个的SQL,这样当查询到有一条数据匹配时就不会继续往下执行了
  4. 自定义排序函数,order by field(value,str1,str2,str3,str4,strn),其中value后面的参数自定义,不限制参数个数,含义是将获取出来的数据根据str1,str2,str3,str4等的顺序排序
  5. 在 mybatis 的 xml 文件中编写 sql 通用片段时,查找的列如果由片段拼接起来的最好写在同一行不然可能会查询超时。
    例如:<include refid="baseQueryColumn" />,(不要换行)s.name, s.age, c.grade, cr.item_name
  6. 如果达不到原生jdbc插入15%的损耗, 就说明这样插入是低效率的. 但是以开发的经验, 系统批量操作少, 是可以用简单的方法。如果你想用更好的效率, 请使用jdbc事务批量操作法, 与 mybitis事务批量操作法,尽量用mybitis,而不用jdbc, 原因是mybitits简化操作, 另外性能影响不大。 经测试, 9G数据在服务器版半时就可以完成. 在本地也是1小时内, 但是用 foreach需要6-7个小时. 原因在于1.数据库需要编译语句,大量拼接未使用预编译消耗时间, 2.批量提交 1000-10000一提交(网上看到,待求证!!!)

猜你喜欢

转载自blog.csdn.net/weixin_45879810/article/details/112941079