25.000+ rows - SELECT consecutive numbers performance issue

I have tried to be as explicit as I could. Below you have the query explained in details

What I want to obtain? - I want to SELECT start_number and end_number from a set of consecutive numbers from a table

ex: 

I have a column with values: 1,2,3,5,7,8,9,10
If I run the SELECT on column will return: (1,3), (5), (7), (8,10)

So my result will look something like :

[
'start_number' => 1,
'end_number' => 3
]
.............
.........

The problem is that the table contains a large number of rows (25.000+…for now) and it takes ages to execute (I have limited the number of results returned but still didn’t fixed the execution time)

SELECT 
l.control_series AS start_control_series,
(SELECT 
MIN(a.control_series) AS id
FROM
cards AS a
LEFT OUTER JOIN
cards AS b ON a.control_series = b.control_series - 1
WHERE
b.control_series IS NULL
AND a.control_series >= l.control_series) AS end_control_series
FROM
cards AS l
LEFT OUTER JOIN
cards AS r ON r.control_series = l.control_series - 1
WHERE
r.control_series IS NULL
ORDER BY product_id ASC
LIMIT 1;


Answer returned:

[
'start_control_series' => "110",
'end_control_series' => '114',
]

MySQLWorkbench response: 1 row(s) returned 304.829 sec / 0.000 sec (as you can see it takes ages)

Table (cards) has 3 columns:
[LIST]
[]row_id (int primary autoincrement)
[
]control_series (bigint)
[*]product_id (int)
[/LIST] Running MySQL 5.1, on a shared host
I’m want to return 10 results (LIMIT 1,10) in a fair amount of time
Thanks in advanced, hopefully someone can help me.