Regardless indexing, ZFS read performance depends on iops performance and caching.
With enough RAM, all random re-reads are delivered from the rambased ARC. You can extend the rambased ARC with an SSD based L2Arc where you can additionally enable "read ahead" to improve sequential readings.
So RAM is the prime matter. Solarish runs stable with 2 GB RAM regardless poolsize. If you want to cache currently active data only, 4-8GB RAM may be ok. If you want to cache all metadata of a pool (around 1% of data), you need up to 1GB RAM per TB active data (not poolsize). You can then add the RAM to cache datablocks. For an average high performance system 16-64GB RAM makes sense. If your workload reads more random data even more can be a good idea (64-512GB RAM). If your workload is more sequential, add an L2Arc with read ahead enabled, preferable up to max 5-10x of RAM size best from an NVMe.