Guys following is the table

CREATE TABLE `tbl_topic` (
`topicId` mediumint(cool: unsigned NOT NULL auto_increment,
`forumId` smallint(5) unsigned NOT NULL default '0',
`forumName` char(35) NOT NULL default '',
`topicName` char(60) NOT NULL default '',
`creatorId` int(10) unsigned NOT NULL default '0',
`createdBy` char(50) NOT NULL default '',
`creatorClass` char(10) NOT NULL default '',
`createdAt` datetime NOT NULL default '0000-00-00 00:00:00',
`creatorIP` int(10) unsigned NOT NULL default '0',
`totalPosts` int(10) unsigned NOT NULL default '1',
`lastPosterId` int(10) unsigned NOT NULL default '0',
`lastPoster` char(50) NOT NULL default '',
`lastPosterClass` char(10) NOT NULL default '',
`lastPostTime` datetime NOT NULL default '0000-00-00 00:00:00',
`lastPosterIP` int(10) unsigned NOT NULL default '0',
`topicStatus` enum('active','inactive') NOT NULL default 'active',
`accessLevel` tinyint(4) NOT NULL default '0' COMMENT '0=all, 1=invited, 2=mod, 3=admin',
`is_pinned` tinyint(3) unsigned NOT NULL default '0',
`is_deleted` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`topicId`),
KEY `forumId` (`forumId`),
KEY `topicStatus` (`topicStatus`),
KEY `is_pinned` (`is_pinned`,`lastPostTime`),
KEY `is_deleted` (`is_deleted`),
KEY `lastPostTime` (`lastPostTime`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Some temp data

INSERT INTO `tbl_topic` VALUES (1, 1, 'Announcements', 'This is test Title '' " \\ ©', 1, 'Admin', 'admin', '2008-02-15 06:24:30', 127, 1, 1, 'Admin', 'admin', '2008-02-15 06:24:30', 127, 'active', 0, 0, 0);
INSERT INTO `tbl_topic` VALUES (2, 1, 'Announcements', 'This is 2nd Topic', 1, 'Admin', 'admin', '2008-02-15 06:35:09', 127, 1, 1, 'Admin', 'admin', '2008-02-15 06:35:09', 127, 'active', 0, 0, 0);
INSERT INTO `tbl_topic` VALUES (3, 1, 'Announcements', 'This is 3nd Topic', 1, 'Admin', 'admin', '2008-02-15 06:35:14', 127, 1, 1, 'Admin', 'admin', '2008-02-15 06:35:14', 127, 'active', 0, 0, 0);
INSERT INTO `tbl_topic` VALUES (4, 1, 'Announcements', 'This is 4nd Topic', 1, 'Admin', 'admin', '2008-02-15 06:35:17', 127, 1, 1, 'Admin', 'admin', '2008-02-15 06:35:17', 127, 'active', 0, 0, 0);
INSERT INTO `tbl_topic` VALUES (5, 1, 'Announcements', 'topic 5', 1, 'Admin', 'admin', '2008-02-15 06:35:22', 127, 1, 1, 'Admin', 'admin', '2008-02-15 06:35:22', 127, 'active', 0, 0, 0);


Query i am running

SELECT topicId, topicName, creatorId, createdBy, creatorClass, UNIX_TIMESTAMP( createdAt ) AS createdAt, creatorIP, totalPosts, lastPosterId, lastPoster, lastPosterClass, UNIX_TIMESTAMP( lastPostTime ) AS lastPostTime, lastPosterIP, is_pinned
FROM PUBLICFORUM.tbl_topic
FORCE INDEX ( is_pinned )
WHERE topicStatus = 'active'
AND is_deleted =0
AND (
accessLevel <=0
)
ORDER BY is_pinned, lastPostTime

and when i explains this query... ( it shows filesort

tried repairing, optimizing... the table but no luck.

the other frequently varient of the query i will be using is
SELECT topicId, topicName, creatorId, createdBy, creatorClass, UNIX_TIMESTAMP(createdAt) as createdAt, creatorIP, totalPosts, lastPosterId, lastPoster, lastPosterClass, UNIX_TIMESTAMP(lastPostTime) as lastPostTime, lastPosterIP, is_pinned FROM PUBLICFORUM.tbl_topic FORCE INDEX (is_pinned) WHERE topicStatus = 'active' and forumId = 1 and is_deleted = 0 and ( accessLevel<=0 OR ( accessLevel=1 and topicId in (1, 2) ) ) ORDER BY is_pinned, lastPostTime

and in the 2nd query the list of topicId in the in expression at end can increase many folds

any help would be great.