Увага! Триває збір коштів на сплату оренди серверу для проекту!
Зібрати плануємо приблизно 1000 грн. Деталі за цим посиланням

119 SQL Code Smells / SQL код, який тхне.

A table in a well-designed database with an appropriate clustered index will have an optimum number of non-clustered indexes, depending on usage. Indexes incur a cost to the system since they must be maintained if data in the table changes. The presence of duplicate indexes and almost-duplicate indexes is a bad sign. So is the presence of unused indexes.
0У добре спроектованій базі таблиця, разом з належним кластерним індексом, матиме також оптимальну кількість некластерних індексів, яка відповідатиме особливостям використання таблиці. Індекси коштують системних ресурсів, які витрачаються щоразу, коли дані в таблиці змінюються, тому наявніть дублюючих або майже дублюючих індексів є ознакою того, що деякі з них створені намарно.
If old data is no longer used, archive the data, store only aggregations, or both.
0Якщо ж старі дані більше не використовуються - архівуйте дані, або зберігайте лише підсумков значення, або і те, і те.
Now that SQL Server supports table partitioning, it is far better to use partitions than to create dated tables, such as Invoices2012, Invoices2013, etc.
0Зараз, коли SQL Server підтримує розділення таблиці, бажаніше використовувати розділення, ніж створювати датовані копії, як то Рахунки2012, Рахунки2013 тощо.
The three-value logic required to handle NULL values can cause problems in reporting, computed values and joins. A NULL value means ‘unknown’, so any sort of mathematics or concatenation will result in an unknown (NULL) value. Table columns should be nullable only when they really need to be. Although it can be useful to signify that the value of a column is unknown or irrelevant for a particular row, NULLs should be permitted only when they’re legitimate for the data and application, and fenced around to avoid subsequent problems.
0Трипозиційна логіка вимагає поратися з тим, що значення NULL можуть призводити до проблем в обчислюваних полях,об'єднаннях, звітах. Значення NULL означає "невідомо", тому будь-які математичні дії чи конкатенація дасть в якості результату так саме "невідомо". Стовпці таблиць мають дозволяти NULL лише у випадках, коли це справді необхідно. Хоча і може бути корисним позначити, що в певному рядку в стовпчику нема відповідного значення, але дозволяти NULL можна лише якщо це відповідає даним і програмам, і належним чином обробляється для запобігання проблемам в майбутньому.
Temporary tables can lead to recompiles, which can be costly. Table variables, while not useful for larger data sets (approximately 75 rows or more), avoid recompiles and are therefore preferred in smaller data sets.
0Використання тимчасових таблиць може призвести до рекомпіляції, а це потребує ресурсів. Табличні змінні, якщо вони використовуються для невеликих обсягів (приблизно до 75 рядків) запобігають рекомпіляції, тому для таких обсягів є бажанішими.
SQL Server storage is built around the clustered index as a fundamental part of the data storage and retrieval engine. The data itself is stored with the clustered key. All this makes having an appropriate clustered index a vital part of database design. The places where a table without a clustered index is preferable are rare; which is why a missing clustered index is a common code smell in database design.
0Система зберігання даних SQL Server побудована навколо клатсерного індексу як фундаментальної складової. Власне дані зберігаються разом з кластерним індексом. Це робить кластений індекс життєво необхідною ланкою розробки бази даних. Випадки, коли таблиця без кластерного індексу справді краще відповідає потребам є поодинокими; отже, створення таблиць без кластерного індексу - типова груба помилка при розробці бази.
If you’re creating tables from a script, they must, like views and routines, always be designed with two-part names. It is possible for different schemas to contain the same table name, and there are some perfectly legitimate reasons for doing this.
0Якщо таблиці створюються за допомогою скрипта, вони, так само як в'ю і процедури, мусять мати повністю зазначене ім'я з двох частин. Це цілком слушно, адже у різних схемах можуть бути створені таблиці з однаковими іменами,
SQL Server lets you create completely redundant and totally duplicate indexes. Sometimes this is done in the mistaken belief that the order of ‘included’ (non-key) columns is significant. It isn’t!
0SQL Server дозволяє створити цілком надлишкові повністю дублюючі індекси. Інколи це роблять, помилково вважаючи, що порядок включення до індексу не-ключових стовпчиків має значення. Не має!
Some scripting engines disable referential integrity during updates. You must ensure that WITH CHECK is enabled or else the constraint is marked as untrusted and therefore won’t be used by the optimizer.
0Деякі механізми виконання скриптів вимикають обмеження цілісності під час оновлення даних. Ви мусите переконатися, що опція WITH CHECK встановлена, бо інакше обмеження буде відмічене як неперевірене і його не використовуватиме оптимізатор запитів.
One way in which SQL Server maintains data integrity is by using constraints to enforce relationships between tables. The query optimizer can also take advantage of these constraints when constructing query plans. Leaving the constraints off in support of letting the code handle it or avoiding the overhead is a common code smell. It’s like forgetting to hit the ‘turbo’ button.
0Один зі шляхів, яким SQL Server підтримає цілісність даних - це використання обмеження цілістності посилань між таблицями. Оптимізатор запитів використовує переваги цього обмеження, коли будує план виконання. Не встановлювати обмеження взагалі або перекласти контроль цілісності посилань на код - типова дурість. Це як забути натиснути кнопку "турбо".
The default nullability for a database’s columns can be altered as a setting. Therefore one cannot assume whether a column will default to NULL or NOT NULL. It is safest to specify it in the column de?nition, and it is essential if you need any portability of your table design.
0Налаштування "чи за замовчуванням дозволятиме новостворюваний стовпчик значення NULL, чи ні" може бути змінене. Тому важко бути впевненим, яке саме замовчування у який момент часу діє. Набагато безпечніше явно зазначати, чи дозволяє стовпчик NULL, чи ні; і це абсолютно необхідним, якщо вам треба забезпечити переносимість дизайну вашої таблиці.
Any programmer will assume a sane database design in which columns with the same name in different tables have the same data type. As a result, they probably won’t verify types. Different types is an accident waiting to happen.
0Будь-який розробник розраховує, що структуру бази даних розроблено у здоровому глузді, тобто, якщо стовпчики в різних таблицях мають тотожні імена - то так само мають й тотожні типи даних. Тож, ймовірно, вони не будуть перевіряти тип. Якщо стовпчики з однаковими іменами мають різний тип - чекайте на інциденти.
17 Creating dated copies of the same table to manage table sizes
017. Створити декілька копій однієї таблиці, щоби дати раду з кількістю рядків
16 Designing a table column without explicitly specifying whether it is nullable
016. Створити стовпчик в таблиці, не зазначивши явно, чи дозволені у ньому значення NULL
15 Using the same column name in different tables but with different data types
015. Використання тотожних імен для стовпчиків, що мають різні типи даних в різних таблицях.
14 Most tables should have a clustered index
014. Для більшості таблиць мають бути створені кластерні індекси.
13 Creating a table without specifying a schema
013. Створення таблиці без явного зазначення схеми
12 Using temporary tables for very small resultsets
012. Створення тимчасових таблиць для дуже малих наборів даних
11 Misusing NULL values
011. Помилкове використання значень NULL
10 Using too many or too few indexes
010. Застосувати забагато або замало індексів

Резюме
Стать:
жінка
Рідна мова:
українська
З нами:
з 18 вересня 2016 р. (814 днів)
Діяльність:
31 версія перекладу з загальним рейтингом 8
27 коментарів
Написати texnik_san приватне повідомлення