KDB+ does not cache anything. It's all hardware caching if you see a difference in speed like this. You can confirm this if you flush the cache (in unix systems there are a set of commands to do this, but you'll need root access). Bottom line is that KDB+ doesn't do any caching at all. (unless you tell it to of course... a la .Q.fu)
As an aside, not sure how your query worked here - 20#dtl will give a list of dates, and date=x would then give a length error. I assume you meant "date in x". In which case you may get skewed results due to multithreading, if you're using -s on the command line.