Can Named Graphs Improve SPARQL query performance?

I've seen that some triple stores, such as Virtuoso, store all named graphs in a single pile of quads. In that kind of store, you won't get any loading time advantage from using named graphs. In theory named graphs would help with management of data sets, but practically I find it can take hours to delete a graph.

Now, when I'm doing queries, I'd think that I could use named graphs to remove triples from the set considered by query to improve performance. How well does that work practically?

When data is split over many graphs, then restricting queries to a single graph (using FROM or GRAPH) makes a massive difference (assuming everything fits into memory). I suspect it's using an index that is organized by graph name, so it's only considering the subset of triples that actually live in that graph.

When the query isn't restricted to a single graph but the graph(s) are determined dynamically (that is, GRAPH ?x { … }), then I got rather mixed results.