更快地选择之前和之后的选定行
问题描述:
我目前正在使用这种方式在所选行的之前和之后进行选择:
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.