For grep you should use the -F option which says the patterns are Fixed Strings and not regular expressions, this allows grep to use a much faster algorithm for matching:
Code:
grep -Ff fruits.txt mydata.txt
Not sure why you would get "skipping", maybe you have some strange characters in your files?
awk doesn't have a way to use a faster algorithm, it's going to be slow for large files.
EDIT:
jpollard's suggestion works for awk as well;
if you are searching for whole words, then you can get good performance with awk. I would still recommend grep -F because it will be fast either way.