Assorted thoughts (although I use Oracle, not SQL Server):
Occasionally, I've noticed strange behavior when selecting features from spatial views that are registered with the GDB. If I export the view as an FC, then the selection issues don't happen with that FC. The selection issues don't happen in non-registered views either. So, I try to avoid registering views with the GDB, unless it's actually needed for publishing a map service to Portal, etc.
Registered view gets buggy when database link added [closed]
Unexpected query layer results: Why does unioning with DUAL fix it?
When using Oracle queries/views in ArcMap, I've found I need to cast the ObjectID to an integer: cast(objectid as number(38,0)) as objectid. Otherwise, ArcMap sometimes doesn't recognize the ObjectID as a valid unique identifier. I'm not sure if something similar is needed in SQL Server or not.
For cases where we don't have an ObjectID, using Oracle's ROWNUM column (a pseudocolum) seems to work pretty well too: cast(rownum as number(38,0)) as rownum_. Note: the column can't be called "rownum"; it needs to be called something else like "rownum_".
Some people say using ROWNUM as the unique identifier will produce unexpected results. But I haven't found it to be a problem. The key thing is: the unique identifier definitely needs to be unique. Otherwise, unexpected results do occur -- especially in the attribute table.
Does SQL Server have an equivalent column to Oracle's ROWNUM pseudocolumn?
Unique identifier fields
Integer representation of textual value (as unique ID for query layer)
For what it's worth, I noticed that the SDE.ST_GEOMETRY datatype was particularly slow when used in some spatial views (data source: dblink/an external database). I found that SDO_GEOMEMTRY in a spatial view, or simply using an XY Event Layer (based on numeric XY columns), was much faster than SDE.ST_GEOMETRY. I talk about it here: Are XY event layers optimized/indexed on-the-fly?
I don't have any experience with indexed views in SQL server. But I believe Oracle's similar functionality, materialized views, does work in ArcMap. Although materialized views are essentially tables, they're not just an index, so I suppose the two concepts aren't really the same/can't be directly compared.
Note: Registering materialized views with the GDB is a bad idea -- I think it converts the materialized view to a regular table, which breaks the sync. I don't know if the same thing applies to indexed views in SQL Server or not.
Materialized view breaks when registered with the GDB
SDO_GEOM materialized view: Why is static field slower than dynamic field? (answer: spatial index was missing)
Materialized view with FAST refresh on remote table: How to include a SHAPE column?
Question: Do indexed views in SQL Server require a spatial index for fast performance? Is that even possible, since I assume an indexed view is still just a regular view?
Have you considered converting the non-spatial table to a feature class, and then automatically populating the geometry using calculation attribute rules or a db trigger? Or if that won't work, could you create a parallel/helper FC that has a geometry, and populate that FC using attribute rules or db triggers?
I know this post is old. And a lot of my points pertain to Oracle, not SQL Server. But I thought I'd share my thoughts in case they're helpful to anyone or trigger some ideas...