sql server - Am i right to sacrifice database design fundamentals in this case for the sake of speed? -
I work in a company that uses a single table to access the database for its outbound CMS, which I I'm transferring to SQL Server based systems. A data list table (not normalized) and a call table is currently an update per second on it. The date, time, and agent IDs with all the call results are stored in the call table Agents have a predetermined record that they each day (It contains records from different data lists, which are ordered to give a single spread in their entire set) Note that the data list record is called once per day.
To ensure speed, the live update data of this system is stored in duplicate of call table fields in the table. They are copied to the calls table at the end of the day in a batch process.
The reason is not clear speed, on which a new record can be added to Call Test Live, but when the user app is closed / opened and reloads the user's data set So I need to check that which record has not been called today - I would need to run a stored proc on the server that chose the last call from the call table and check if its call for today Does not match date. I believe that if there is a field null in the data list table, checking it is a more expensive query.
With this setup, I only run expensive queries at the end of each day.
There are many disadvantages in this design, the main limit is my inexplicability. This is my first SQL Server system. It is very important, and I want to ensure that this will work and I use DB during a failure I can easily get rid of the data. It has now worked for 11 months (and no failure, low downtime compared to the old system).
I have created a very generalized database for other things (with very few users), but I am scared to implement it for the calling database.
Specifically, I would like to know my thoughts whether the repetition of the call field in the data list table is necessary in my current setup or not that I should be able to use the call table please try my perspective Do it and answer it. I know you can tighten the DBA!
I think it's normal to depend on how much you can do, and what May be necessary.
For example, as Ian mentioned, it has been working for such a long time, do some features that will affect the database schema?
> If not, leave it, but leave it, but if you need to add new features to change the database, then you may want to see how to make it normal at that point.You do not need to be able to call a stored procedure, you should be able to use a select statement to get the maximum in the maximum (ID) table by the User ID, that is what you need to do Depends on the need.
Before making a decision to normalize or make any major architectural changes, first look at why you are seeing it. If you are doing this, because you think it needs to be done, stop it, and see if there is anything that you can do, maybe add a unit test, so that you can work for some time How long will the operation take. To see if there is any real benefit, the numbers are good before making big changes.
Comments
Post a Comment