Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
K
kb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • granite
  • kb
  • Wiki
    • Best_practice
  • AlterTable

Last edited by 吴一博 Feb 22, 2021
Page history

AlterTable

创建索引

组合索引

ALTER TABLE table_name ADD INDEX index_name(field1, field2, ...);
有某几个字段经常被组合起来作为查询条件,建议将这些字段创建为一个组合索引,而不是每个字段单独创建索引

组合索引使用

假设表A有组合索引idx_abc(a, b, c)

sql1: select * from A where a = 'a'; 用到索引

sql2: select * from A where b = 'b'(或c = 'c'); 没有用到索引

sql3: select a,b,c from A where b = 'b'(或c = 'c'); 用到索引,查询字段在(a,b,c)中可以用到索引

sql4: select a,d from A where b = 'b'(或c = 'c');没有用到索引,查询字段包含(a,b,c)之外的字段,没有用到索引

sql5: select * from A where a = 'a' and b = 'b'; 用到索引

sql6: select * from A where b = 'b' and c = 'c'; 没有用到索引

总结:

  • where条件包含组合索引的第一个字段(a),查询字段无论是什么都会用到索引
  • where条件不含组合索引的第一个字段(a),但包含组合索引中的其他字段(b,c),只有当筛选的字段仅在组合索引的字段内时才会用到索引,包含其他字段则不会用到索引

组合唯一索引

组合唯一索引与组合索引的区别在于组合唯一索引多了唯一性约束
  • mysql的唯一性约束默认对大小写不敏感,如果需要区分大小写,则将字段设为二进制(binary)即可
  • 不区分大小写时,ü、u、U是相等的

添加字段

  • 若表中有根据当前时间戳更新的datetime字段(last_update_time),添加字段时即使设有默认值,last_update_time值不会变

修改字段

  • 修改字段类型时,若表中有根据当前时间戳更新的datetime字段(last_update_time),其时间值不会更新
  • 修改字段类型时,若设有默认值,则默认值只对新增数据有效,该字段原有值不会改变。
  • 修改原有字段的类型,且重设默认值,需要将原有数据的默认值统一改为新的默认值时,一定要关闭last_update_time的自动更新功能(on update current_timestamp),数据修改玩之后再将last_update_time设为自动更新
  • 开启或关闭last_update_time的自动更新功能就像修改表名一样瞬间完成。

增、删多个分区

alter table tb_monitor_task_cn  drop partition p9, p10, p11;

alter table tb_monitor_task_cn  add partition (partition p8 values  less than (10),
                                               partition p9 values  less than (11), 
                                               partition p10 values  less than (12), 
                                               partition p11 values  less than (13));
Clone repository
  • README
  • basic_guidelines
  • basic_guidelines
    • basic_guidelines
    • dev_guide
    • project_build
    • 开发流程
  • best_practice
  • best_practice
    • AlterTable
    • RDS
    • azkaban
    • create_table
    • design
    • elasticsearch
    • elasticsearch
      • ES运维
    • logstash
View All Pages