之前写文章列表接口,一开始数据库才几百条数据,查询速度飞快,我根本没想着加索引。等网站运营了半年,数据库攒了十万条文章数据,打开文章列表要三秒,数据库CPU直接跑到80%,我一开始以为是查询逻辑写得有问题,优化了半天还是慢。后来用explain看执行计划,才发现我按分类id查文章的时候,分类id字段根本没加索引,数据库每次查都全表扫十万行数据,能不慢吗。 我给经常用来查询的字段:分类id、发布时间、文章id,全加上普通索引,加完之后再查列表,执行时间从三秒直接降到0.01秒,数据库CPU占用直接掉到10%,我当时都傻了,就加了几个索引,效果差这么多。之前我总觉得,索引是大数据量才需要加的,小表无所谓,结果十万行的数据量,没加索引直接把数据库拖垮。 从那之后我建表的时候,先想清楚哪些字段是经常用来查、用来排序的,直接把索引加上,比如文章按分类查、按时间排序,那就给分类id、发布时间加索引,再也不等数据攒了一堆才想起来加。现在我帮新手看慢查询,90%的情况就是没加索引,全表扫大表,导致数据库慢,加完索引直接就好。 很多新手学数据库,知道索引能提速,但总觉得自己表小,加不加无所谓,等数据量到十万、百万行,没加索引的表直接就能把数据库打挂。真的,写表的时候顺手把常用查询字段的索引加上,五分钟的事,能避免后面网站人多了数据库卡死的大问题。
本站源码来源于网络收集修改或者交换,甚至可能并非原创,如遇未经考证信息需持审慎态度。若有疑问,可联系本站处理。
0