• Just curious, is this another design where the UUIDs are generated in the app tier within disconnected memory-resident objects and then committed to the database when the user likes what they have created in the application?

    For the database, there is no way to say which would be better without being able to study the differences in performance while a representative workload, before and after changes were made to the indexes in place.

    Ideally the app would be rewritten to make use of clustered surrogate keys so the UUID columns could be sent on their way, i.e. dropped.

    However, that would likely be cost prohibitive. Why not go back to clustering on the UUID and invest in SSD drives which in effect make index fragmentation a non-issue?

    There are no special teachers of virtue, because virtue is taught by the whole community.
    --Plato