It’s slightly less efficient to re-create the view, because it involves dropping and re-creating SQLite tables (or ForestDB key/value stores.) But I don’t think the difference is noticeable.
You might consider doing what the CBLQueryBuilder does: it takes the parameters that affect the map function and generates a unique digest from them (by putting them in an NSDictionary, converting to canonical JSON, then taking the SHA-1 of the JSON data.) You can use that digest as the view’s version string. The advantage of this is that it’ll automatically invalidate the index if the parameters change, without your having to keep track of what the old parameter values were.
—Jens