Based on SQL queries by Stan Sokolov, I managed to clean up an awful mess in my wiki - I haven't monitored it for half an year and it was full of spam.
I had to clean it from specific date.
If you are going to try same, please backup first - those sql queries can destroy your wiki, kill kittens and cause pregnancy.
In this example, "tr_" is my prefix, "189" is last good page id, "41" is last good user id, and "20130215152547" is first spam entry date.
#Update page state to last good before the date
UPDATE tr_page p SET p.page_latest=( SELECT MAX(r.rev_id) FROM tr_revision r
WHERE r.rev_page=p.page_id
AND rev_timestamp <20130215152547) WHERE p.page_id IN
(SELECT r2.rev_page FROM tr_revision r2 WHERE rev_timestamp >=20130215152547);
#Update page length to match actual
UPDATE tr_page p SET p.page_len=( SELECT r.rev_len FROM tr_revision r WHERE
r.rev_page=p.page_id AND r.rev_id=p.page_latest );
#Clean up spam revisions
DELETE FROM tr_revision WHERE rev_timestamp >=20130215152547;
#Clear recent changes
DELETE FROM tr_recentchanges WHERE rc_timestamp >=20130215152547;
#Block all new bad users from ever entering wiki with this login
UPDATE tr_user SET
user_password = '',
user_newpassword = '',
user_email = '',
user_token = ''
WHERE user_id>41;
#Delete pages, staring from the last good id
DELETE FROM tr_page WHERE page_id>189;
#Also, you will need TO clean TABLE tr_pagelinks.
#You will have to do it manually. It's easy, use some editor
#like PHPMyAdmin or SQLyog
#Clean cache
DELETE FROM `tr_objectcache`;
DELETE FROM `tr_querycache`;
DELETE FROM `tr_querycachetwo`;