Вам нужно создать другую таблицу для хранения результата вывода, в моем примере я назвал ее outputresult (user, score) :
Declare @duser nvarchar(30)
Declare @duser2 nvarchar(30)
Declare @dscore int
DECLARE cur1 CURSOR FOR
select distinct [user] from TOP3s
OPEN cur1
FETCH NEXT FROM cur1 INTO @duser
WHILE @@Fetch_Status = 0
BEGIN
Declare cur2 Cursor FOR
select top (3) [user], score from TOP3s where [user] = @duser order by [user], score desc
OPEN cur2
fetch next from cur2 into @duser2, @dscore
WHILE @@Fetch_Status = 0
begin
insert into outputresult values(@duser2, @dscore)
fetch next from cur2 into @duser2, @dscore
end
close cur2
deallocate cur2
FETCH NEXT FROM cur1 INTO @duser
end
close cur1
Deallocate cur1
--you can run this query to check the output:
select * from outputresult
Документация PHP содержит хорошее сравнение mysql, mysqli и PDO . Я знаю, что вы спрашивали только о скорости, но другие могут найти это полезным. В нем говорится об особенностях различий между опциями.
"Это зависит"
Например, PHP MySQL vs MySQLi Database Access Metrics и последующие комментарии указывают на аргументы в обоих направлениях.
Если у вас есть зрелая база данных и кодовая база, проведите некоторое тестирование и посмотрите, что работает в вашей системе. Если нет, то перестаньте беспокоиться о преждевременной оптимизации.
Если миллисекунды не имеют значения, то не беспокойтесь. Конечно, если вам не нужна дополнительная функциональность, предоставляемая mysqli, тогда просто придерживайтесь проверенного и испытанного mysql.