最新版本: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功能,其他的自己研究。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线