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) 就可以很好的完成任务了 。
- 近年来|算力就这么点,为了提升语言模型性能,谷歌想了个新点子论文链接
- 腾讯云智能打法首揭秘!4条快速路让AI“开箱即用”
- 在Excel表格的使用中|excel怎么快速批量删除所有空白行
- 在平时办公中|excel表格中如何快速提取部分数据
- 平时大家需要同时创建很多Word文档的时候是怎么做的呢?大部分用户估计都是一个一个复制粘...|如何快速批量创建大量的word文档?
- 电脑只要用久了|为什么电脑使用时间长会导致重装系统也无法提升运行速度
- 数据库原理及MySQL应用 | 日志管理(附限免视频)
- iOS|iOS15.7.2正式推送,续航大幅提升超乎想象,信号太好了,必须养老
- 最新央行官网支付牌照查询教程,快速判断POS机是否是正规品牌
- iOS|iOS16.2发布,信号提升很惊喜,续航省电太顶了,终于可以养老
