Implementing and indexing User Defined Fields in an SQL DB

前端 未结 2 2024

I need to store a large table (several millions or rows) that contains a large number of user-defined fields (not known at compile time, but probably around 20 to 40 custom fiel

2条回答
  •  再見小時候
    2021-02-04 22:25

    You could represent all of the user defined fields with an XML Column, e.g.

    "But I am not sure what the performance impact of doing this would be, however it is definitely the prettiest way of handling UDF's in a database in my opinion."

       
          Some Address
          Some City
          ...etc
       
    

    Then what I would do is put a trigger on the table so that when the column is updated it recreates a view for the table which pulls out the xml values as columns on the view. Lock the view etc during the recreation of it to prevent access errors application side.

    Then I would create a stored procedure for updating the XML so that it would work for any XML Column following your User Defined Field xml formatting, e.g. Insert/Update/Remove/Get

    GetUDFFieldValue AddUDFField UpdateUDFField DeleteUDFField

    --Shared Parameters TableName ColumnName (e.g. use Dynamic SQL to get the XML from X table by X Column Name to make it universal/generic to all of your UDF Fields)

    Here is an article on XML Performance Optimization from Sql Server 2005 (not seeing an equivalent in newer versions):

    http://technet.microsoft.com/en-us/library/ms345118(v=sql.90).aspx

    Lastly:

    Are you sure you even need an RDBMS? NoSql Is a better fit for User Generated Fields, I might even consider using Both NoSql and Sql Server.

提交回复
热议问题