更快地选择之前和之后的选定行 [英] Faster way to Select before and after of selected row

查看:67
本文介绍了更快地选择之前和之后的选定行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在使用这种方式在所选行的之前和之后进行选择:

I'm currently using this way for selecting before and after of selected row:

SELECT rank, id FROM (
  SELECT
    id,
    @i:=@i + 1 rank,
    @match:=IF(table.id = 50, @i, @match)
  FROM
    table t,(SELECT @i:=0, @match:=0) vars
  ORDER BY t.t_date DESC
) t2
WHERE
@match>=rank-1 AND @match<=rank+1;

如您所见,在行id = 50之前和之后,我选择了相等.

As you can see I selected equal, before and after rows id=50.

问题:我正在创建具有IF条件的匹配行,并将其放在var中.这样可以提高内存和性能效率吗?

推荐答案

MariaDB 10.2实现了许多窗口函数,并且效率很高.

MariaDB 10.2 implements a lot of Window Functions, and does it efficiently.

参考

这篇关于更快地选择之前和之后的选定行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆