Question: In my experience, the default **sitecore\_master\_index** and **sitecore\_web\_index** work pretty fast with Solr. We have around 1 million documents in the index and it returns a result in between 0 to 10ms. I can also rebuild part of the index using Rebuild Tree button on developer tab, so I don't have to worry that if some part of the index is broken I have to do a full rebuild (which takes a lot of time).

When and why is recommended to create a custom index? What are the best practices here?

Answer: 
I don't think it takes 10 ms when you have complex query with facets. 

The most important reasons for creating a separate index are the following:

1. you can index only the items you need, speeding up (re-)indexation
2. you can index only the fields you really need, speeding up (re-)indexation
3. your index will only contain what you need, making it faster to search what you need
4. you can control when the index gets updated
An additional minor benefit is that it makes it easier to debug the index using a tool like Luke (<http://www.getopt.org/luke/>). For example, if you were developing a blog, you might have 100 documents in a custom index as opposed to a million in the Sitecore indexes. The custom index will be much easier to browse and debug (as it would have far fewer documents and potentially fewer fields) than the monstrous Sitecore indexes.