`
lizhuang
  • 浏览: 899092 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mysql建表索引规范

 
阅读更多
一,设计表规范:
1. MySQL建表,字段需设置为非空,需设置字段默认值。
2. mysql建表,字段需NULL时,需设置字段默认值,默认值不为NULL。
3. MySQL建表,如果字段等价于外键,应在该字段加索引。
4. MySQL建表,不同表之间的相同属性值的字段,列类型,类型长度,是否非空,是否默认值,需保持一致,否则无法正确使用索引进行关联对比。
5. MySQL使用时,一条SQL语句只能使用一个表的一个索引。所有的字段类型都可以索引,多列索引的属性最多15个。
6. 如果可以在多个索引中进行选择,MySQL通常使用找到最少行的索引,索引唯一值最高的索引。
7. 建立索引index(part1,part2,part3),相当于建立了 index(part1),index(part1,part2)和index(part1,part2,part3)三个索引。
8. MySQL针对like语法必须如下格式才使用索引:
SELECT * FROM t1 WHERE key_col LIKE ‘ab%’ ;
9. SELECT COUNT(*) 语法在没有where条件的语句中执行效率没有SELECT COUNT(col_name)快,但是在有where条件的语句中执行效率要快。
10. 在where条件中多个and的条件中,必须都是一个多列索引的key_part属性而且必须包含key_part1。各自单一索引的话,只使用遍历最少行的那个索引。
11. 在where条件中多个or的条件中,每一个条件,都必须是一个有效索引。
12. ORDER BY 后面的条件必须是同一索引的属性,排序顺序必须一致(比如都是升序或都是降序)。
13. 所有GROUP BY列引用同一索引的属性,并且索引必须是按顺序保存其关键字的。
14.、 JOIN 索引,所有匹配ON和where的字段应建立合适的索引。
15. 对智能的扫描全表使用FORCE INDEX告知MySQL,使用索引效率更高。
16. 定期ANALYZE TABLE tbl_name为扫描的表更新关键字分布 。
17. 定期使用慢日志检查语句,执行explain,分析可能改进的索引。
18. 条件允许的话,设置较大的key_buffer_size和query_cache_size的值(全局参数),和sort_buffer_size的值(session变量,建议不要超过4M)。
二,命名规范 :
1.主键的命名采用如下规则:
主键名用pk_开头,后面跟该主键所在的表名。主键名长度不能超过30个字符。如果过长,可对表名进行缩写。缩写规则同表名的缩写规则。主键名用小写的英文单词来表示。
2.外键的命名采用如下规则:
外键名用fk_开头,后面跟该外键所在的表名和对应的主表名(不含t_)。子表名和父表名自己用下划线(_)分隔。外键名长度不能超过30个字符。如果过长,可对表名进行缩写。缩写规则同表名的缩写规则。外键名用小写的英文单词来表示。
3.索引的命名采用如下规则:
1)索引名用小写的英文字母和数字表示。索引名的长度不能超过30个字符。
2)主键对应的索引和主键同名。
3)唯一性索引用uni_开头,后面跟表名。一般性索引用ind_开头,后面跟表名。
4)如果索引长度过长,可对表名进行缩写。缩写规则同表名的缩写规则
5)索引基本语法
CREATE INDEX 索引名称 ON 表名(字段);
show index from 表名 ;
drop index 索引名称 on 表名;
6)唯一值越多的字段,使用索引的效果越好。设置联合索引时,唯一值越多的,越应该放在“左侧”。
三,SQL语句优化规范 :
1. 使用mysql explain 对sql执行效率进行检测 ,explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
1) 使用方法:在select语句前加上explain即可
2) explain 分析结果形式如下:
table | type | possible_keys | key | key_len | ref | rows | Extra
explain 分析结果形式中各属性含义:
table :显示这一行的数据是关于哪张表的
type :这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
possible_keys :显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
key :实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引
key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
rows:MYSQL认为必须检查的用来返回请求数据的行数
Extra  :返回的描述的意义
2. 尽量使用 "inner join " 查询替换子查询条件中的 "in " ,防止由于数据量过大,引发数据库挂起问题
3.使用索引应注意问题:
1)查询语句的where条件后边使用 “!=”或“<>”时,索引不生效,和普通字段一样
2)查询语句的where条件后边使用字符串函数或其他函数,索引不生效,和普通字段一样
3)使用连接(join)查询时,只有在主键和外键的数据类型相同时索引才会生效
4)查询语句的where条件后边使用Like关键字应注意,like '%jx%' 和 like '%jx'方式索引均不生效, like 'jx%'方式索引生效
5)InnoDB数据表不支持全文索引
分享到:
评论

相关推荐

    MySql建表规范与说明.docx

    MySql 建表规范详解 在关系型数据库中,建表是非常重要的一步。一个良好的建表规范可以提高数据库的性能,减少维护成本和改错的可能性。下面我们将详细介绍 MySql 建表规范和示例建表。 一、关系型数据库 关系型...

    java实体转mysql建表语句

    为了从Java实体类自动生成MySQL建表语句,开发者可以使用一些工具或库,如`JPA`的`Metamodel`API,或者开源项目如`MyBatis Generator`。这些工具能够解析Java源代码,从中提取实体类信息并生成相应的SQL语句。 4. ...

    MySQL建表的规范总结.pdf

    以下是对“MySQL建表的规范总结.pdf”中提到的关键点的详细解释: **设计表规范** 1. **字段非空和默认值**:创建表时,为确保数据完整性,字段应尽可能设置为非空(NOT NULL),并设定默认值。这样可以避免插入...

    Mysql建表与索引使用规范详解

    MySQL数据库在设计和优化中,建表和索引的使用规范是至关重要的,它们直接影响到数据存储的效率和查询性能。以下是对这些规范的详细解释: 1. **字段设置**: - **非空约束**:在创建表时,推荐为字段设置非空约束...

    MySQL建表的规范总结[归类].pdf

    以下是对MySQL建表和索引使用规范的详细说明: **一、设计表规范** 1. **非空约束与默认值**:在创建表时,为确保数据完整性,字段应尽可能设置为非空(NOT NULL)。若允许字段为空,应提供默认值,以防止插入空值...

    建表规范丶SQL规范丶索引规范-word文档

    通过遵循以上建表规范、SQL规范及索引规范,可以帮助数据库管理员和开发人员更高效地进行数据库设计、SQL语句编写及索引优化,从而提升数据库的整体性能和可维护性。这些规范不仅有助于确保数据库的稳定运行,还能...

    阿里巴巴MySQL开发规范

    规范主要分为三个部分:建库建表、创建索引、编写SQL语句。 #### 二、建库建表规范 1. **自增主键**:每张表必须有一个自增的主键ID,除非是分库分表的情况。自增主键能有效提高插入性能,减少页分裂和表碎片空间,...

    mysql sql建表脚本

    总结一下,SQL建表脚本是数据库管理和开发中不可或缺的一部分,它帮助我们规范和组织数据库结构。通过理解并熟练运用`CREATE TABLE`语句以及相关的约束和索引,我们可以创建出满足需求的高效、可靠的数据库表。对于...

    以mysql为主,记录数据库的建表规范及优化方案等

    综上所述,MySQL数据库的建表规范和优化方案涉及到多个方面,包括数据类型选择、索引设计、查询优化等。遵循这些原则,能有效提高数据库的运行效率,确保系统的稳定性和性能。在实际工作中,应结合具体业务场景,...

    mysql .pdf建表的一些规则 和注意事项

    ### MySQL建表规则与注意事项详解 #### 一、命名规则 **1.1 库名与应用名称一致性** - **推荐做法**:建议数据库的名字与应用程序的名称保持一致,这样可以便于开发人员理解和记忆,同时也方便后期维护。 **1.2 ...

    mysql_数据库规范.docx

    - **建表语句示例**:包含完整的字段定义、索引、约束等,如`CREATE TABLE ...`。 2.2 SQL编写 - **DML语句**:INSERT、UPDATE、DELETE操作应明确指定条件,避免全表扫描,使用事务确保数据一致性。 - **多表连接*...

    2019-05-31-MySQL数据库设计规范1

    一个规范的建表语句应该清晰、简洁,并包含所有必要的约束和索引。例如: ```sql CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT ...

    mysql数据库规范(数据库表设计规范、代码编写规范等)

    - **索引规范**:合理规划索引,以优化查询性能,但避免过度使用,因为索引会占用额外的存储空间。 2. **代码编写** - **DAO规范**:定义数据访问对象(DAO)时,应保持代码整洁,易于理解和维护,遵循一定的编码...

    MySQL大表性能优化方案 和 MySQL高性能表设计规范

    7. **合理建表顺序**:先创建索引,后插入数据,可以减少索引重建的开销。 8. **合理使用存储过程和触发器**:在合适的情况下使用存储过程和触发器,可以提高代码复用性和数据处理效率。 9. **监控与调优**:定期...

    mysql数据库规范拥抱易读数据库脚本

    【MySQL 数据库规范详解】 MySQL 数据库规范是确保数据库设计高效、稳定和易于维护的关键。以下是对标题和描述中提到的各个知识点的详细说明: 1. **建表规约** - **字段命名**:使用小写字母和数字,禁止数字...

    oracle相关数据库的知识,包括建表语句,索引视图,触发器存储过程等

    #### 六、数据库设计规范——三大范式 - **第一范式**:确保表中的每个字段都是不可分割的基本数据项。 - **第二范式**:在满足第一范式的前提下,表中的每一列都必须完全依赖于主键。 - **第三范式**:在满足第二...

Global site tag (gtag.js) - Google Analytics