SQL和接口相关的内容

最近一直在做的内容主要是写流程的前后端内容,然后写接口。整个过程大概就是后端从数据库取数据,前端做显示。接口的内容也是差不多,无非就是读取请求参数,从数据库中取值拼装并返回。

期间有一些写的很烂的东西,改正之后长了些教训,记录一下。

接口速度的提升

第一点,要避免没有条件,直接请求一整张表的内容的情况,不止指的是全字段,指的是整张表的全部数据,之前写接口,干的事情大概是首先请求一整张表的数据,然后for循环处理,根据传参的id之类的东西做内容排除,实际用起来,一开始响应的速度还行,但是只要数据一多,响应速度就会变慢,尽量还是在SQL请求的时候就把条件加上,而不是获取全局数据后再去排除。

第二点,很多张表的数据拼接,适时使用连接查询。自己之前不喜欢用表连接,因为写起来很长,经常使用的是先查一张表的内容,再用这张表的某个字段当条件去另一张表里查询,最后做数据拼接。实际用起来也是,会越来越慢,而且SQL请求的数量会很多。SQL请求越多就越慢,连接查询既减少了请求的数量也变相减少了数据拼接的工作量,唯一不好的点大概是略微有点长。

第三点,尽量避免在for循环里使用SQL请求,这一点可以联系到上面那条,多个表数据拼接,第一个表请求获得一个数组,然后for循环,去第二张表里面查内容再拼接……如果量少还好,量多的话,真的难以控制访问速度,写起来大概很轻松,但是访问速度会相当慢。

第四点,limit和offset关键字实现分页,接口大多数情况直接返回整张表的数据都是比较困难的事情,不分页的话响应速度会相当慢,建议还是分页,响应速度会很快,无非就是让请求端多请求几次,但体验会好不少。

内容目前大概就这些,自己还是得抽点时间去改改之前写的东西,不少内容确实能实际感受到响应的缓慢。