


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 | Extraexplain 分析结果形式中各属性含义:table :显示这一行的数据是关于哪张表的type :这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALLpossible_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)使用连接(j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全国一等奖高中语文统编版必修上册《劝学》 公开课课件
- 老年人才专业知识培训内容课件
- 实验题力(五)-2023年中考物理重难点专项突破(原卷版)
- 统编版高三历史二轮复习专练:古代的生产工具与劳作(解析版)
- 红烧排骨要煮多久
- 高中二年级英语《Unit 5 Working the Land Reading and Thinking》
- 老年人养生食谱知识培训课件
- 四川省泸州市合江县2024-2025学年七年级下学期期末模拟考试 道德与法治试题(含答案)
- 老年人健康生活知识培训课件
- 酸奶商品知识培训课件
- 人教版小学四年级上册《信息科技》全套完整版课件
- 高考志愿规划创业
- 激光束传输与变换-第八讲
- Unit 1 Back to School Reading 说课稿-2024-2025学年高一英语译林版(2020)必修第一册
- 汽车租赁公司挂靠合同范本
- 福建省福州市2024-2025学年高三上学期8月第一次质量检测试题 英语 含答案
- 2024年中国高筋雪花粉市场调查研究报告
- 仓储物流安全培训课件
- 安徽省皖江名校2024-2025学年高一上学期12月联考英语试题(含答案无听力原文及音频)
- 洒水降尘合同范例
- 烧伤手术护理
评论
0/150
提交评论