Yeah so the datetime search functionality has some issues. If you create an hour index, we will create one key for each hour. Now for each query, we would first query what indexes are there. So when you do le() with a relatively new time, it would end up fetching a lot more indexes than ge(). Which is why you see the improvement.
Your point regarding that your query shouldn’t hit the index is valid, and we technically don’t. But the way code is written, we first calculate how many indexes are there to compare against how many uids are there. I fixed this earlier for eq filters, where I came up with storing the number in memory. I am yet to fix it for le, gt.
You can safely drop the index (if anything goes wrong it can be easily rebuilt), but I am not sure if your filter query would work. It should though.
Would it be possible for you to try out this PR: perf(core): improve performance for ineq filters when uidlist is small by harshil-goel · Pull Request #9383 · hypermodeinc/dgraph · GitHub, and see if that helps?