最新版本:sql默认值怎么设置(sql给字段添加默认值)
优采云 发布时间: 2022-12-26 05:36最新版本:sql默认值怎么设置(sql给字段添加默认值)
使用limit优化查询,防止SQL被优化目录查询优化1.1 最大值和最小值的优化
对于 MIN() 和 MAX() 查询,MySQL 没有优化好,例如
select MIN(id) FROM film where name = '西游记'; 复制代码
假设表 film 数据如下:
其中id是主键,自增,name是varchar,没有索引
因为name没有索引,MySQL会进行全表扫描。 因为id是自增的,我们可以把它当成第一次找到name='西游记',id就是我们想要的结果,我们可以改写SQL去问:
select id FROM film where name = '西游记' limit 1; 复制代码
此时,当找到第一条记录时,查询将停止以获得更高的性能。
1.2 优化限制分页
系统进行分页操作时,offset较大时,例如:limit 10000,20,mysql需要查询10020条记录,只返回20条记录,之前的记录全部丢弃,开销很大
SELECT id, name, price FROM file LIMIT 10000 OFFSET 20复制代码
上面的SQL我觉得是常规的分页写法,写法没什么问题。 如上所述,浪费了很多性能。
1.2.1 使用关联查询优化
优化此类查询的一种简单方法是尽可能使用索引覆盖扫描,而不是查询所有列,然后根据需要进行连接操作以返回所需的列。 当偏移量很大时,这样的效率会大大提高。
SELECT id, name, priceFROM filmINNER JOIN ( SELECT id FROM film LIMIT 10000 OFFSET 20 ) AS LIM USING(id) 复制代码 1.2.2 使用区间查询
有时LIMIT可以转化为一个已知位置的查询,让MySQL通过范围扫描得到相应的结果。 例如,如果您在位置列上有一个索引并且边界是预先计算的,请将查询重写为:
SELECT id, name, priceFROM filmWHERE position BETWEEN AND 10020ORDER BY position 复制代码 1.2.3 使用唯一自增序列查询
这里的唯一自增序列可以是自增id主键,也可以是其他唯一且递增的数字
在前面的思路中,我们考虑的是传入页数和每页的页数。 在一些操作中,我们可以改成传入上次查询的自增序列,后面再查询对应的每页页数。
比如前端本来需要传入页数(pageIndex)和每页的页数(pageSize),此时的SQL为
select * from film limit (pageIndex -1) * pageSize OFFSET pageIndex * pageSize复制代码
如果改为让前端传入自增序列(sid)和上次查询结果的页数(pageSize)
比如此时的自增序列(sid)是电影的id,那么SQL可以改写为
select * from film where id > sidlimit pageSize复制代码
检查第一页的时候只要传入0作为sid即可,检查第二页的时候只要在获取第一页的时候最后传入并获取id即可
防止被优化
在写SQL的时候,除了考虑优化SQL来减少执行时间,有时候还需要防止SQL被MySQL自己优化,导致执行结果和想象的不一样。
MySQL使用group by语句查询时,满足多条数据时,会显示第一条数据,例如:
假设表 film 数据如下:
然后执行SQL select * from film group by name,结果为:
但是当有些数据重复的时候,我们往往想要的是最后一条数据,也就是我们会想到的先排序再分组的子查询形式,如下:
select *from ( select * from film order by id desc) as film_orderedgroup by name;复制代码
执行后发现结果并没有改变。 这是因为MySQL5.7会对子查询进行优化,认为子查询中的order by可以忽略不计,只要Derived表不收录以下情况,就可以进行优化:
UNION 子句GROUP BYDISTINCTAggregationLIMIT 或 OFFSET
根据上面的描述,我们可以使用limit来防止子查询优化,重写SQL之后
select *from ( select * from film order by id desc limit 10000000) as film_orderedgroup by name;复制代码
这导致我们想要的
最新版本:WP采集插件 wordpress自动采集插件源码 autopost
该插件是最新版本的wp-autopost-pro 3.7.8。
采集插件适用对象 1、新建的wordpress站点内容比较少,希望尽快有更丰富的内容;
2、热点内容自动采集发布;
3.定时采集、人工采集发布或存稿;
4、CSS样式规则可以更准确的采集需要的内容。
5、伪原创及翻译、代理IP采集并保存Cookie记录;
6.可以采集内容到自定义栏目
新增支持谷歌神经网络翻译、有道神经网络翻译,轻松获取优质原创文章
全面支持市面上所有主流对象存储服务,七牛云、阿里云OSS等。
可以采集微信公众号、今日头条号等自自媒体内容,因为百度不收录公众号、今日头条文章等,可以轻松获取优质“原创”文章,增加百度收录量和网站权重
可以采集任何网站的内容,采集的信息一目了然。
通过简单的设置即可采集任何网站的内容,并可设置多个采集任务同时运行。 任务可以设置为自动或手动运行。 主任务列表显示各采集任务状态:上次检测采集时间、预计下一次检测采集时间、最近采集文章数、已采集更新文章数等信息,方便查看和管理。
文章管理功能,方便查询、查找、删除采集的文章。 改进后的算法从根本上杜绝了同文章的重复采集。 日志功能记录采集过程中出现的异常和爬取错误,方便查看设置错误进行修复。
增强seo功能,其他的自己研究。