程序员面试之MySQL数据库表的设计
如果要选择一门程序员必备的技能,那答案无疑是数据库,而MySQL是首选。很多企业在面试过程中会提问MySQL数据库表设计要注意什么,接下来小千就给大家讲解一下。
MySQL相较于MSSQL SERVER和Oracle,是一款功能强大的小型数据库,能很好的满足千万级数据量的项目需要。注意,MySQL本身是没有可视化界面的,在Windows系统中你可以通过dos命令进行简单的连接和查看,在Linux系统下可以通过MySQL的命令进行连接查看。
MySQL支持很多种不同的数据类型,并且选择正确的数据类型对于获得高性能至关重要。在设计MySQL表时,你需要注意五点:
1、一定要设计主键
主键,又叫主关键字,用来唯一地标识表中的某一条记录。它能保证实体的完整性,加快数据库的操作速度,这一点很重要。主键使用自增最佳,这样每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。如果不是自增主键,那么可能会在中间插入,就会引发页的分裂,产生很多表碎片。
2、字段命名尽量避开保留字
在给字段命名的时候,要尽量避开关键字,以免出了问题而不好查找。虽然在以关键字命名的字段上加’'可以不再报错,但保险起见,就不要这么设计。
3、表名长度尽可能短
表名称不要太长,Oracle限制字符为30个,如果有转数据库的需要,表名太长无疑会增加转换的工作量。
4、尽可能不使用default null
NULL值不能进行索引,影响索引的统计信息,影响优化器的判断。复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。
5、时间戳Timestamp
每个表的最后都加一个create_time为时间戳类型timestamp的字段,该方式对于调试阶段非常有帮助。
6、不要直接存储图片、音频、视频等大容量内容
MySQL中有两个字段类型被用来设计存放大容量文件:TEXT和BLOB类型。但MySQL内存临时表并不支持这样的大数据类型,如果查询中包含这样的数据,在排序等操作时,就不能使用内存临时表,必须使用磁盘临时表进行,导致查询效率缓慢。同时因为数据内容比较大,就会造成binlog内容比较多,导致主从同步效率问题。
了解更多数据库优化知识,只要你的技术能够满足企业的需要,你就能拿到满意的薪资。如果你真的想要学好编程开发,可以选择专业的学习,让自己更好的进入编程行业。
本文来自千锋教育,转载请注明出处。
程序员面试之MySQL数据库表的设计相关推荐
- 后端程序员必备:mysql数据库相关流程图/原理图芬芬细雨
前言 整理了一些Mysql数据库相关流程图/原理图,做一下笔记,大家一起学习. 1.mysql主从复制原理图 mysql主从复制原理是大厂后端的高频面试题,了解mysql主从复制原理非常有必要. 主从 ...
- Mysql数据库表如何设计?
三范式 三范式是一种数据库设计原则,要求将数据分解成更小.更简单的表,以减少数据冗余和提高数据一致性,同时保证每个表都符合第一范式.第二范式和第三范式的要求. 1. 代码实现 假设我们需要设计一个简单 ...
- MySQL 数据库表的设计
数据库设计步骤: 收集信息--了解本项目的功能--图书管理系统.借书,换书 标识实体--标识项目中的客观对象--图书.借阅者.借书记录...... 标识实体属性:图书信息--图书id.书名.价格... ...
- MySQL程序员面试笔试宝典pdf_数据库程序员面试笔试宝典
前言 上篇 面试笔试经验技巧篇 第1章 求职经验分享2 1.1 踩别人没有踩过的坑,走别人没有走过的路2 1.2 一只小白成长为DBA的心路历程3 1.3 一个热衷于SQL优化的DBA成长经历3 第2 ...
- 数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表……
文章来源:墨天轮社区 https://www.modb.pro/db/26343 摘要:墨天轮数据库周刊第28期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档.本周分享 开发者最喜爱的 ...
- 金三银四求职季,程序员面试必备——数据库篇
我们身处一个技术变革的时代,随着分布式.云计算.大数据等技术的飞速发展,各种数据库百花齐放.它们在具体功能和使用场景上各有千秋,在实现细节上也不尽相同,但是在工作原理上又有着诸多共通性和相似性. 跳槽 ...
- mysql router是什么_数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作...
摘要:墨天轮数据库周刊第28期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档.本周分享 开发者最喜爱的数据库是什么?阿里云脱口秀爆聊程序员转型:MySQL update误操作后进行数据 ...
- 《MySQL数据库原理、设计与应用》课后习题及答案 黑马程序员编著
<MySQL数据库原理.设计与应用>课后习题及答案 黑马程序员编著 答案有文档形式,但是csdn必须要下载,,需要的人就去那里下载吧.<MySQL数据库原理.设计与应用>课后习 ...
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...
最新文章
- python 导包语法 import package as name 和 from package import name 的区别
- 【python笔记】python模块 datatime模块
- aftool提示15天未更新_微信版本更新至7.0.15 视频号新增3种功能
- PermGen space处理方法1
- libcurl上传文件
- API文档自动生成,Swagger的配置
- 程序员的需要掌握的数学知识
- 全国青少年软件编程等级考试标准(正式级)
- 【RX解码MIPI输出】XS9922B 4通道模拟复合视频解码芯片 功能对标TP2815
- 关于架构师:角色、能力和挑战
- 【CC2640R2F】香瓜CC2640R2F之LCD
- 【报告分享】2021年小红书内容营销趋势洞察-千瓜(附下载)
- IM方案技术调研报告
- 基于多相滤波器的数字信道化算法详解(Python, Verilog代码已开源)
- win7连上WIFI但上不去网
- 让IE浏览器支持HTML5标准的方法
- mybatis-plus设置id自增,插入数据。
- 物联网“遇上”云原生,会擦出怎样的火花?
- Vue3 初探 ref、reactive 、及改变数组的值
- 让微积分穿梭于工作与学习之间(13):带圆弧多边形的面积计算(上)
热门文章
- 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)
- 码牛安卓移动互联网高级开发正式课
- web第二节2020.5.11
- 江苏python工资一般多少_会计行业一般工资多少?
- java虚拟机加载类_java虚拟机之类加载机制(一)
- 【身份认证及权限控制一】单点登录
- JAVA——仿Linux命令行文件管理系统命令的简单实现
- 鸿蒙系统8xmax,华为8月9日发布基于安卓10.0全新系统:自主鸿蒙会同台亮相
- 【学习笔记】opencv的python接口 几何变换
- hive 1.1.1 Specified key was too long; max key length is 767 bytes