数据库分库、分表:
1.确认数据库分表后显示的表名格式:例如:user100、user_100
2.确认数据表按哪一个具体字段进行分表
3.如数据库很大时,同时有多个库时,一定要注意所要操作的表是在哪一个库。有可能一样的表存在于不同的库中
4.打开一个库的session时,记得最后一定要关闭
5.代码中进行分表保存、查询、删除时是否按规定的分表字段进行操作,一定要核实所操作的表格式是否一致
6.创建实体时,一定要和数据库中的表名对应,千万不可写错库
数据查询:
1.另外补充关于数据库查询数据时,要提升查询性能,可以只查你所需要的字段,没有用到的字段不要全查出来
2.sql语句查询,需要带条件时:记得where后面应该紧跟索引字段条件,然后是非索引字段条件;如果条件有可能为""或null时要记得判断,如果为空或null则不要查询时携带此条件
3.经常被用作查询条件的字段可以设为某张表的索引
4.能不关联查询(join),尽量不要作关联查询,分开查询一方面便于分表扩充;另一方面便于性能的提升
5.select SQL_CALC_FOUND_ROWS distinct a.user_id2 from ${db_connection}.user_attention${table_name} as a where user_id1 = #{user_id1}
从上面代码可以看出:此sql语句可以查询出不重复的某关注分表中的所有数量:SQL_CALC_FOUND_ROWS distinct ,记住这两个关键词
6.
在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的;
但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;
a.任何情况下SELECT COUNT(*) FROM tablename是最优选择;
b.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = 'value' 这种查询;
c.杜绝SELECT COUNT(COL) FROM tablename WHERE COL2 = 'value' 的出现。
7.
select b.* from (select a.* from web_hjobtrack as a where a.hjob_id in(" + hjobIds + ") order by a.hjt_id) as b group by b.hjob_id;
注意这条语句:外面的select 必须有as b,否则报“ Every derived table must have its own alias”