binary search tree for finding more than one object
===

I've just read about binary search tree from "Learn You a Haskell" book, and i'm wondering is it effective to search more than one element using this tree?
For example, suppose I have a bunch of objects where every object have some index, and

            5
          /   \
         3     7
        / \   / \
       1   4 6   8

if I need to find element by index 8, I need to do only three steps `5 -> 7 -> 8`, instead of iterating over whole list until the end.

But what if I need to find several objects by index 1, 4, 6, 8.
Seems like I'd need to repeat the same action for each element `5-> 3 -> 1` `5 -> 3 -> 4`, `5 -> 7 -> 6` and `5 -> 7 -> 8`. So my question is: is it still make sense to use binary search tree for finding more that one element? Could it be better than checking each element for condition (which leads only to O(n) in worst case)?

Also, what kind of data structure is better to use if need to check more than one attribute. E.g. in the example above I was looking only for `id` attribute, but what if also need to search by `name`, or `color`, etc.