Features and Fixes in SentryOne Plan Explorer 18.5
Today we released an updated build of SentryOne Plan Explorer, 18.5.0. My team also worked on some of the enhancements in the core platform, but the following fixes were included in this release of PE. If you have any questions or suggestions, please let me know.
When we first designed Index Analysis, the requirement was to provide statistics information (like histograms) for indexes that were used in the query. When we started really using this functionality for index tuning and scoring potential indexes, though, we quickly realized it would be much more complete if we also provided stats information for all of the columns and indexes that have stats available. So now you will see more stats information whether you are clicking on an index header or a column.
We use the TSqlNNNParser module to parse T-SQL batches, where NNN is the major version of the database engine (120, 130, etc.). We rely on the version of SQL Server we are connected to in order to determine which version of the parser to use. When a new version of SQL Server is available, it typically uses a version of the parser that we don't have yet. This doesn't really change our behavior except that if you send a batch like this to SQL Server 2019 for example…
SELECT 1 FROM sys.objects; GO SELECT 2 FROM sys.objects;
…we didn't try to parse these batches, because we don't yet have TSql150Parser in place. So we would send this entire block of text, as is, to SQL Server. Which SQL Server doesn't like (since
GO is not T-SQL). What we will do going forward is if we don't have the parser for a specific major version, we'll try with the most recent parser we have (in this case, TSql140Parser). Once SQL Server 2019 gets to release, we'll update our parser collection so it will be properly supported. Though the only downside now would be an error message from passing syntax that was valid in 140 but is no longer valid in 150, which is unlikely.
We streamlined the content of the Edit Connection dialog as part of our efforts to improve our UI experience on high-end displays. We tightened up the dimensions and removed some superfluous labels.
I don't often get the pleasure of tuning queries with zero duration and zero CPU, but when I do, I want a slightly better display than this:
We were not populating these columns when the values were 0. This was confusing, and we don't do it anymore.
If you generated multiple plans from multiple batches from Management Studio, and opened them together as a single .sqlplan file in Plan Explorer, we treated statement #1 in each batch the same. If you had a missing index suggested in statement 2 for batch #2, it would show up in the wrong batch. We've fixed this mapping.