Yeah, cuz that was the old way to give nodes a type (it was in docs). As we now have the Type System. We no longer recommend this approach. And the Type System was created precisely to eliminate this approach.
Like I said, recently ‘has’ got some work on it. Now I can’t tell if versions before 1.1.X received the changes.
I can not because it is not official. What I am talking about is an idea of my personal experience. I don’t know how ‘has’ works internally for sure because I’m not a golang developer. I have a notion of what happens over the top. So I can not add anything without having the necessary knowledge.
What I can imagine from logic is that ‘has’ goes through all datasets indefinitely until it finds all entities that have that predicate. Imagine if you have millions.
As you can possibly add more and more entities with that predicate during usage. The ‘has’ never would be predictable. And it must always go through every dataset. And then it applies the pagination function with parameter ‘first’. So it takes time.
This is all theoretical, I can be completely wrong.
It is noteworthy that ‘Has’ does not follow indexing.