使用unique限定名字属性,这样如果有插入行的用户名与已有行同名则报错

解决方案 »

  1.   

    现在已经是unique
    如果是同张表的情况是没问题但问题是,不同表时怎么处理?
      

  2.   

    使用 merge 引擎。
    或者使用分区表。
      

  3.   


    除了这两种没别的办法吗?
    merge是将
    table_1
    table_2
    table_3
    ....
    table_n
    合并后检查吗?
    这样会不会效率不高啊?
    而且table_n是未知的
    用存储过程动态merge吗?
    分区表是将name拿出来独立建分区表吗?题外题:阿里云的rds好像不支持表分区
      

  4.   

    1. 使用分区表,设置name为unique,这样效率最高
    2. 使用存储过程,创建一个before_insert,如果新插入的name值在
    select name from t1
    union all
    select name from t2
    union all
    ...
    select name from tn

    删除刚才插入的数据,这方法效率比较低!
      

  5.   


    我已经将name字段独立出来了,并将这个表也分表了
    现在还有个问题,我已经分了N张表,但这个N还会自动增加,如何在不改代码且保证效率的情况做到列表分页等操作?
      

  6.   


    我已经将name字段独立出来了,并将这个表也分表了
    现在还有个问题,我已经分了N张表,但这个N还会自动增加,如何在不改代码且保证效率的情况做到列表分页等操作?
    分区表不用改代码,提高效率主要是表现在查询方面
      

  7.   


    现在已经分表了
    table_1
    table_2
    table_3
    ....
    table_n这些表中都有一个字段 user_id现在我要取user_id=1的记录
    主要是在列表操作中如何提高效率?除了每次都去每次都去查这些表外,还有其他方式吗?
    第3方中间件之类的也可以
      

  8.   


    现在已经分表了
    table_1
    table_2
    table_3
    ....
    table_n这些表中都有一个字段 user_id现在我要取user_id=1的记录
    主要是在列表操作中如何提高效率?除了每次都去每次都去查这些表外,还有其他方式吗?
    第3方中间件之类的也可以
    分区表也可以建索引,你给user_id索引就可以了
      

  9.   

    几个月前,有一个类似的帖子,写的比较好,你可以借鉴一下。如果你只是分成了 2 张表,你可以在两张表上做自增列。表A ,以1 开始,每次增长 2 ,
    表B , 以2开始,每次增长2。最终,表A 的值 是 1,3,5,7,9 ,表B 是 2,4,6,8 就不重复了。。