ТаблицыTables

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL AzureдаХранилище данных SQL AzureдаParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Таблицы являются объектами, которые содержат все данные в базах данных.Tables are database objects that contain all the data in a database. В таблицах данные логически организованы в виде строк и столбцов по аналогии с электронной таблицей.In tables, data is logically organized in a row-and-column format similar to a spreadsheet. Каждая строка представляет собой уникальную запись, а каждый столбец — поле записи.Each row represents a unique record, and each column represents a field in the record. Например, таблица, содержащая данные о сотрудниках компании, может иметь строку для каждого сотрудника и столбцы, представляющие сведения о сотрудниках (например, его идентификационный номер, имя, адрес, должность и номер домашнего телефона).For example, a table that contains employee data for a company might contain a row for each employee and columns representing employee information such as employee number, name, address, job title, and home telephone number.

  • Число таблиц в базе данных ограничено только числом объектов доступных в базе данных (2 147 483 647).The number of tables in a database is limited only by the number of objects allowed in a database (2,147,483,647). Стандартная определяемая пользователем таблица может содержать до 1 024 столбцов.A standard user-defined table can have up to 1,024 columns. Число строк и общий размер таблицы ограничиваются только пространством для хранения на сервере.The number of rows in the table is limited only by the storage capacity of the server.

  • Можно также устанавливать свойства для таблицы и каждого столбца в таблице для управления допустимыми данными и другими свойствами.You can assign properties to the table and to each column in the table to control the data that is allowed and other properties. Например, можно задать ограничения на столбец, чтобы в нем не допускались значения NULL, или указать значение по умолчанию, если оно не задано. Также можно присвоить ограничения ключа на таблицу, который обеспечивает уникальность, или установить связи между таблицами.For example, you can create constraints on a column to disallow null values or provide a default value if a value is not specified, or you can assign a key constraint on the table that enforces uniqueness or defines a relationship between tables.

  • Данные в таблице могут быть сжаты либо по строкам, либо по страницам.The data in the table can be compressed either by row or by page. Сжатие данных может позволить отображать больше строк на странице.Data compression can allow more rows to be stored on a page. Дополнительные сведения см. в статье Data Compression.For more information, see Data Compression.

Типы таблицTypes of Tables

Кроме стандартной роли обычных определяемых пользователем таблиц в SQL ServerSQL Server предусмотрены следующие типы таблиц, служащих особым целям в базе данных.Besides the standard role of basic user-defined tables, SQL ServerSQL Server provides the following types of tables that serve special purposes in a database.

Секционированные таблицыPartitioned Tables

Секционированные таблицы — это таблицы, данные которых горизонтально разделены на блоки, которые могут быть распределены между несколькими файловыми группами в базе данных.Partitioned tables are tables whose data is horizontally divided into units which may be spread across more than one filegroup in a database. Секционирование делает большие таблицы и индексы более управляемыми, позволяет быстро и эффективно получать доступ к наборам данных и управлять ими, при этом сохраняя целостность всей коллекции.Partitioning makes large tables or indexes more manageable by letting you access or manage subsets of data quickly and efficiently, while maintaining the integrity of the overall collection. В SQL Server 2017SQL Server 2017 по умолчанию поддерживается до 15 000 секций.By default, SQL Server 2017SQL Server 2017 supports up to 15,000 partitions. Дополнительные сведения см. в разделе Partitioned Tables and Indexes.For more information, see Partitioned Tables and Indexes.

Временные таблицыTemporary Tables

Темпоральные таблицы хранятся в базе данных tempdb.Temporary tables are stored in tempdb. Существует два вида временных таблиц: локальные и глобальные.There are two types of temporary tables: local and global. Они отличаются друг от друга именами, видимостью и доступностью.They differ from each other in their names, their visibility, and their availability. Имена локальных временных таблиц начинаются с одного символа (#); они видны только текущему соединению пользователя и удаляются, когда пользователь отключается от экземпляра SQL ServerSQL Server.Local temporary tables have a single number sign (#) as the first character of their names; they are visible only to the current connection for the user, and they are deleted when the user disconnects from the instance of SQL ServerSQL Server. Временные глобальные таблицы начинаются с двух символов номера (##); они видны любому пользователю и удаляются, когда все пользователи, которые на них ссылаются, отключаются от экземпляра SQL ServerSQL Server.Global temporary tables have two number signs (##) as the first characters of their names; they are visible to any user after they are created, and they are deleted when all users referencing the table disconnect from the instance of SQL ServerSQL Server.

Сокращение повторных компиляций для рабочих нагрузок с использованием темпоральных таблиц в нескольких областях.Reduced recompilations for workloads using temporary tables across multiple scopes

[!INCLUDEss2019 Сокращение повторных компиляций для рабочих нагрузок с использованием темпоральных таблиц в нескольких областях.[!INCLUDEss2019 reduces recompilations for workloads using temporary tables across multiple scopes. До этого выпуска при ссылке на временную таблицу в инструкции на языке обработки данных DML (SELECT, INSERT, UPDATE, DELETE), если таблица была создана пакетом во внешней области, происходила повторная компиляция инструкции DML при каждом выполнении.Prior to this feature, when referencing a temporary table with a data manipulation language (DML) statement (SELECT, INSERT, UPDATE, DELETE), if the temporary table was created by an outer scope batch, this would result in a recompile of the DML statement each time it is executed. В рамках этого улучшения SQL Server выполняет дополнительные упрощенные проверки, чтобы избежать ненужных перекомпиляций:With this improvement, SQL Server performs additional lightweight checks to avoid unnecessary recompilations:

  • Проверяет, совпадает ли модуль внешней области, использованный для создания темпоральной таблицы во время компиляции, с используемым для последующих выполнений.Check if the outer-scope module used for creating the temporary table at compile time is the same one used for consecutive executions.
  • Отслеживает все изменения языка DDL определения данных, сделанные при первичной компиляции, и сравнивает их с операциями DDL в последующих запусках.Keep track of any data definition language (DDL) changes made at initial compilation and compare them with DDL operations for consecutive executions.

Конечным результатом является снижение числа лишних перекомпиляций и нагрузки на ЦП.The end result is a reduction in extraneous recompilations and CPU-overhead.

Системные таблицыSystem Tables

SQL ServerSQL Server хранит данные, определяющие конфигурацию сервера и всех его таблиц, в специальном наборе таблиц, которые называются системными.stores the data that defines the configuration of the server and all its tables in a special set of tables known as system tables. Пользователи не могут напрямую выполнить запрос или обновление системных таблиц.Users cannot directly query or update the system tables. Данные из системных таблиц доступны через системные представления.The information in the system tables is made available through the system views. Дополнительные сведения см. в разделе Системные представления (Transact-SQL).For more information, see System Views (Transact-SQL).

Широкие таблицыWide Tables

В широких таблицах используются разреженные столбцы , что позволяет увеличить общее количество столбцов в таблице до 30 000.Wide tables use sparse columns to increase the total of columns that a table can have to 30,000. Разреженные столбцы — это обычные столбцы, имеющие оптимизированное хранилище для значений NULL.Sparse columns are ordinary columns that have an optimized storage for null values. Разреженные столбцы уменьшают пространство, необходимое для хранения значений NULL, однако увеличивается стоимость получения значений, отличных от NULL.Sparse columns reduce the space requirements for null values at the cost of more overhead to retrieve nonnull values. В широкой таблице определен набор столбцов, который представляет собой нетипизированное XML-представление, в котором все разреженные столбцы таблицы объединены в структурированные выходные данные.A wide table has defined a column set, which is an untyped XML representation that combines all the sparse columns of a table into a structured output. Количество индексов и статистик также увеличивается до 1000 и 30 000 соответственно.The number of indexes and statistics is also increased to 1,000 and 30,000, respectively. Максимальный размер строки широкой таблицы — 8 019 байт.The maximum size of a wide table row is 8,019 bytes. Таким образом, большинство данных в любой строке должны составлять значения NULL.Therefore, most of the data in any particular row should be NULL. Максимальным числом неразряженных и вычисляемых столбцов в широкой таблице остается 1024.The maximum number of nonsparse columns plus computed columns in a wide table remains 1,024.

Широкие таблицы влияют на производительность следующим образом.Wide tables have the following performance implications.

  • Широкие таблицы увеличивают затраты на обслуживание индексов для таблицы.Wide tables can increase the cost to maintain indexes on the table. Рекомендуется ограничить количество индексов широкой таблицы только теми, которые необходимы для бизнес-логики.We recommend that the number of indexes on a wide table be limited to the indexes that are required by the business logic. С ростом числа индексов возрастает время компиляции DML и требования к памяти.As the number of indexes increases, so does the DML compile-time and memory requirement. Некластеризованные индексы должны быть отфильтрованными индексами, применяющимися к подмножествам данных.Nonclustered indexes should be filtered indexes that are applied to data subsets. Дополнительные сведения см. в разделе Create Filtered Indexes.For more information, see Create Filtered Indexes.

  • Приложения могут динамически добавлять или удалять столбцы из широких таблиц.Applications can dynamically add and remove columns from wide tables. При добавлении или удалении столбцов скомпилированные планы запросов также становятся недействительными.When columns are added or removed, compiled query plans are also invalidated. Рекомендуется разрабатывать приложение с учетом предполагаемой рабочей нагрузки, чтобы изменения в схеме были сведены к минимуму.We recommend that you design an application to match the projected workload so that schema changes are minimized.

  • Добавление или удаление данных из широкой таблицы может влиять на производительность.When data is added and removed from a wide table, performance can be affected. Приложения следует разрабатывать с учетом предполагаемой рабочей нагрузки, чтобы изменения в табличных данных были сведены к минимуму.Applications must be designed for the projected workload so that changes to the table data is minimized.

  • В широкой таблице следует ограничить выполнение инструкций DML, обновляющих несколько строк ключа кластеризации.Limit the execution of DML statements on a wide table that update multiple rows of a clustering key. Для компиляции и выполнения этих инструкций может потребоваться значительный объем ресурсов.These statements can require significant memory resources to compile and execute.

  • Операции по переключению секций в широких таблицах могут выполняться медленно. Для их выполнения может потребоваться значительный объем памяти.Switch partition operations on wide tables can be slow and might require large amounts of memory to process. Требования к производительности и памяти пропорциональны общему количеству столбцов в исходной и целевой секциях.The performance and memory requirements are proportional to the total number of columns in both the source and target partitions.

  • Курсоры обновления, обновляющие определенные столбцы в широкой таблице, должны явно перечислять столбцы в предложении FOR UPDATE.Update cursors that update specific columns in a wide table should list the columns explicitly in the FOR UPDATE clause. Это поможет оптимизировать производительность при использовании курсоров.This will help optimize performance when you use cursors.

Обобщенные табличные задачиCommon Table Tasks

В следующей таблице приведены ссылки на общие задачи, связанные с созданием или изменением таблицы.The following table provides links to common tasks associated with creating or modifying a table.

Табличные задачиTable Tasks РазделTopic
Описание процесса создания таблицы.Describes how to create a table. Создание таблиц (ядро СУБД)Create Tables (Database Engine)
Описание процесса удаления таблицы.Describes how to delete a table. Удаление таблиц (ядро СУБД)Delete Tables (Database Engine)
Описание способов создания новой таблицы, которая содержит несколько или все столбцы существующей таблицы.Describes how to create a new table that contains some or all of the columns in an existing table. Дублирование таблицDuplicate Tables
Описывает процесс переименования таблицы.Describes how to rename a table. Переименование таблиц (ядро СУБД)Rename Tables (Database Engine)
Описание процесса просмотра свойств таблицы.Describes how to view the properties of the table. Просмотр определения таблицыView the Table Definition
Описывает, как определить, находятся ли в зависимости от таблицы другие объекты, например представление или хранимая процедура.Describes how to determine whether other objects such as a view or stored procedure depend on a table. Просмотр зависимостей таблицыView the Dependencies of a Table

В следующей таблице приведены ссылки на общие задачи, связанные с созданием или изменением столбца таблицы.The following table provides links to common tasks associated with creating or modifying columns in a table.

Задачи столбцаColumn Tasks РазделTopic
Описывает добавление столбцов в существующую таблицу.Describes how to add columns to an existing table. Добавление столбцов в таблицу (ядро СУБД)Add Columns to a Table (Database Engine)
Описывает процесс удаления столбца из таблицы.Describes how to delete columns from a table. Удаление столбцов из таблицыDelete Columns from a Table
Описывает изменение имени столбца.Describes how to change the name of a column. Переименование столбцов (ядро СУБД)Rename Columns (Database Engine)
Описывает копирование столбцов из одной таблицы в другую, когда копируется либо только определение столбца, либо определение и данные.Describes how to copy columns from one table to another, copying either just the column definition, or the definition and data. Копирование столбцов из одной таблицы в другую (ядро СУБД)Copy Columns from One Table to Another (Database Engine)
Описывает изменение описания столбца путем изменения типа данных или другого свойства.Describes how to modify a column definition, by changing the data type or other property. Изменение столбцов (ядро СУБД)Modify Columns (Database Engine)
Описывает изменение порядка, в котором отображаются столбцы.Describes how to change the order in which the columns appear. Изменение порядка столбцов в таблицеChange Column Order in a Table
Описывает создание вычисляемого столбца в таблице.Describes how to create a computed column in a table. Указание вычисляемых столбцов в таблицеSpecify Computed Columns in a Table
Описывает, как установить значение по умолчанию для столбца.Describes how to specify a default value for a column. Это значение используется, если другое значение не предоставлено.This value is used if another value is not supplied. Указание значений по умолчанию для столбцовSpecify Default Values for Columns

См. также:See Also

Ограничения уникальности и проверочные ограничения Ограничения первичных и внешних ключейPrimary and Foreign Key Constraints Unique Constraints and Check Constraints