MySQL needs to determine a random number of all 600K+ rows, just to determine which row comes first.
A possible work around can be:
SELECT id,postalCode,location
FROM (
SELECT id,postalCode,location
from jobs_feed
WHERE check_parsed= 1 AND similarjob_status=0 AND is_updated != 0
ORDER BY id LIMIT 1000 )x
ORDER BY RAND() LIMIT 1;
This will first select the first 1000 records, and then pick a random row from those.
NOTE: This behavior is different from that you where doing, but faster because only the first 1000 records need to be fetched.
NOTE2: You can change 1000 to another (bigger) value, as long as you think performance is OK (and this alternative way of selecting is OK.)
EDIT: An alternative approach would be to do a dynamic (read RANDOM) offset, like given in this answer: https://stackoverflow.com/a/5873705/724039
This should be done in a stored procedure, and would look something like this:
CREATE DEFINER=`root`@`localhost` PROCEDURE `getRandomRow`()
BEGIN
DECLARE offset BIGINT;
SET offset = RAND()*600000; -- change this to get the number of records from your table, and not the fixed 600000
SELECT id,postalCode,location
from jobs_feed
WHERE check_parsed= 1 AND similarjob_status=0 AND is_updated != 0
ORDER BY id LIMIT offset,1;
END