Lets think about this, where "id != 'x'" will grab everything except a string 'x' so the index isn't going to help you find anything really.
Try the query like this
SELECT n,... FROM Categories WHERE parent_id = 'cfcd208495d565ef66e7dff9f98764da' AND showcategory = 'Y', id != 'cfcd208495d565ef66e7dff9f98764da'
I belive it will do the WHERE in order it is typed, so it will grab parent_id cfcd2... first, then in that result set find showcategory 'Y', then scan for != 'cfcd208495d565ef66e7dff9f98764da' (Which is all the remaining records, but much less to deal with)
This may not be true, need to read your database users manual and see how they work.