- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
欢迎来到蓝队云小课堂。在我们日常工作中,可能会经常使用MySQL数据库,因为它是开源免费的,而且性能还不错。今天这篇文章重点跟大家一起聊一聊使用MySQL时需要避免哪些情况,来提高工作效率,希望对你会有所帮助。
1. 查询不加where条件
有些小伙伴,希望在代码中,一次性把表中的所有数据都查出来,然后在内存中处理业务逻辑,认为代码性能更好。
反例:
SELECT * FROM users;
在查询数据的时候不加where条件。这种情况下数据量小还好。但如果数据量很大,每个业务操作,都需要查出表中的所有数据,可能会导致程序出现OOM问题。如果数据太多,处理速度也会集聚下降。
正例:
SELECT * FROM users WHERE code = '1001';
使用具体的where查询条件,比如code字段,先过滤数据,再做处理。
2. 没有使用索引
有时候,我们的程序,在刚上线的时候,数据比较少,没有加索引,问题不大。但随着用户量越来越多,表中数据在呈指数级的增加。突然有一天发现,查询数据变慢了。
例如:
SELECT * FROM orders WHERE customer_id = 123;
我们可以给customer_id字段加个索引:
CREATE INDEX idx_customer ON orders(customer_id);
这能大大提升速度!
3. 不处理 NULL 值
问题描述:统计时忘了 NULL 的影响,以为结果准确,结果却大相径庭。
反例:
SELECT COUNT(name) FROM users;
这些只能统计name字段非NULL的数量。其实,没有统计完全。如果想统计所有的记录行数,我们可以使用COUNT(*)。
正例:
SELECT COUNT(*) FROM users;
这样就能统计所有行数。
4. 数据类型选错
有些小伙伴,在创建表时,随意使用 VARCHAR(255),会导致性能低下,还浪费存储。
反例:
CREATE TABLE products (
id INT,
status VARCHAR(255)
);
这种情况的性能不佳。
我们可以将status字段该成tinyint类型:
CREATE TABLE products (
id INT,
status tinyint(1) DEFAULT '0' COMMENT '状态 1:有效 0:无效'
);
更节省空间。
5. 没有用explain分析查询
有些现在sql语句,查询慢,却不去分析执行计划,结果就只能盲目优化。
正例:
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
EXPLAIN 会告诉你查询是怎么执行的,帮助你找到瓶颈。
6. 字符集设置不当
有些小伙伴,喜欢将MySQL的字符集设置成utf8。但用户评价输入框中,用户输入了表情符号,可能会直接导致程序保存。
字符集设置错误,也可能会导致汉字变乱码,用户体验直线下滑。
正例:
CREATE TABLE messages (
id INT,
content TEXT
) CHARACTER SET utf8mb4;
建议大家在建表时,将字符集设置成使utf8mb4,它能够支持更多的字符,包括:常用中文汉字和一些表情符号。
7. 使用过多的 SELECT *
有些小伙伴,在写的sql语句中,习惯性使用select *,一次性查询所有的字段。
反例:
SELECT * FROM orders;
这种做法每次都会查出很多没用的字段,不仅浪费带宽,也增加了查询开销。
好的做法是,每次只查询要用到的字段。
正例:
SELECT id, total FROM orders;
我们的业务中,只需要用到id和total字段的数据,其他的字段就可以无需查询。
8. 没有定期备份
在工作中,最怕遇到猪队友误删数据。当发现数据全没了就后悔太晚了。
建议定期备份,使用mysqldump:
mysqldump -u root -p database_name > backup.sql
我们可以写一个定时任务,每个一段时间,比如:一天或,备份一次数据。
后面如果哪天又被误删数据了,可以直接通过mysql命令,将数据还原。
蓝队云官网上拥有完善的技术支持库,你可以在这里找到更多的帮助和资源。如果你有任何技术问题,也欢迎直接咨询我们。同时,蓝队云还整理了运维必备的工具包,免费分享给大家使用,需要的朋友可以直接咨询。
更多技术知识,蓝队云期待与你一起探索。让我们一起在技术的海洋中航行,发现更多的秘密和宝藏。
售前咨询
售后咨询
备案咨询
二维码
TOP