43、member 用 mid 做标准进行分表方便查询么?一般的业务需求中基本上都是以 username 为查询依据 , 正常应当是 username 做 hash 取模来分表 。
而分表的话 MySQL 的 partition 功能就是干这个的 , 对代码是透明的;在代码层面去实现貌似是不合理的 。
44、我们应该为数据库里的每张表都设置一个 ID 做为其主键 , 而且最好的是一个 INT 型的(推荐使用 UNSIGNED) , 并设置上自动增加的 AUTO_INCREMENT 标志 。
45、在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON , 在结束时设置 SET NOCOUNT OFF 。 无需在执行存储过程和触发器的每个语句后向客户端发送 DONE_IN_PROC 消息 。
46、MySQL 查询可以启用高速查询缓存 。 这是提高数据库性能的有效MySQL优化方法之一 。 当同一个查询被执行多次时 , 从缓存中提取数据和直接从数据库中返回数据快很多 。
47、EXPLAIN SELECT 查询用来跟踪查看效果:
使用 EXPLAIN 关键字可以让你知道 MySQL 是如何处理你的 SQL 语句的 。 这可以帮你分析你的查询语句或是表结构的性能瓶颈 。 EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的 , 你的数据表是如何被搜索和排序的 。
48、当只要一行数据时使用 LIMIT 1 :
当你查询表的有些时候 , 你已经知道结果只会有一条结果 , 但因为你可能需要去fetch游标 , 或是你也许会去检查返回的记录数 。
在这种情况下 , 加上 LIMIT 1 可以增加性能 。 这样一来 , MySQL 数据库引擎会在找到一条数据后停止搜索 , 而不是继续往后查少下一条符合记录的数据 。
49、选择表合适存储引擎:
- myisam:应用时以读和插入操作为主 , 只有少量的更新和删除 , 并且对事务的完整性 , 并发性要求不是很高的 。
- InnoDB:事务处理 , 以及并发条件下要求数据的一致性 。 除了插入和查询外 , 包括很多的更新和删除 。 (InnoDB 有效地降低删除和更新导致的锁定) 。
- 对于支持事务的 InnoDB类 型的表来说 , 影响速度的主要原因是 AUTOCOMMIT 默认设置是打开的 , 而且程序没有显式调用 BEGIN 开始事务 , 导致每插入一条都自动提交 , 严重影响了速度 。 可以在执行 SQL 前调用 begin , 多条 SQL 形成一个事物(即使 autocommit 打开也可以) , 将大大提高性能 。
原则:更小通常更好 , 简单就好 , 所有字段都得有默认值 , 尽量避免 NULL 。
例如:数据库表设计时候更小的占磁盘空间尽可能使用更小的整数类型 。 (mediumint 就比 int 更合适)
比如时间字段:datetime 和 timestamp 。 datetime 占用8个字节 , timestamp 占用4个字节 , 只用了一半 。 而 timestamp 表示的范围是 1970—2037 适合做更新时间 。
MySQL可以很好的支持大数据量的存取 , 但是一般说来 , 数据库中的表越小 , 在它上面执行的查询也就会越快 。
因此 , 在创建表的时候 , 为了获得更好的性能 , 我们可以将表中字段的宽度设得尽可能小 。
例如:在定义邮政编码这个字段时 , 如果将其设置为 CHAR(255) , 显然给数据库增加了不必要的空间 。 甚至使用VARCHAR 这种类型也是多余的 , 因为 CHAR(6) 就可以很好的完成任务了 。
- Intel发布新显卡驱动,Arc A770游戏性能最高提升8%
- 盛和金刚网再添数控设备,持续提升生产加工能力!
- 苹果手机相信大家都不陌生|iphone12还值得入手吗,这些细节的提升能不能值1000
- 大家应该都知道|8+256g版本降到2499元,骁龙778g处理器,续航提升
- 对于小米手机|小米12x抛开参数只讲体验,细节提升明显,3199元贵吗
- oppo reno|骁龙8Gen2相比骁龙8+有多大的提升,这个幅度你还满意吗?
- excel|Excel如何快速预览查看图片?
- 数据库|Office365中的这几个高能函数,正中使用痛点,用起来真香!
- 普通人如何通过副业赚钱?四个快速变现的建议!干货分享
- 运营商|安利几款能提升手机体验感的神奇App,让你的手机越用越好用