Чтобы доказать, что загрузка программного обеспечения незначительно отличается с точки зрения работы, выполняемой сервером SQL, я провел следующие тесты.
Первый тест вставляет 100 тыс. Строк в каждую из 2 таблиц и загружает данные издве таблицы.
Второй тест вставляет 200 тыс. строк в 1 таблицу и загружает ее.
Заключение?
Время, необходимое для сохранения 100 тыс. строк в двух таблицах, такое же, как и для сохранения 200 тыс. строк водин стол(79 секунд) Время, необходимое для выбора всех 200 000 строк данных, разделенных на две таблицы, совпадает со временем, необходимым для выбора 200 000 строк данных из одной таблицы.(10 секунд на 10 выборов).
Вот код:
Вставка в две таблицы:
CREATE TABLE GpsDataA ( GpsDataID int PRIMARY KEY IDENTITY(1,1), X float, Y float );
DECLARE @i int = 0;
WHILE (@i < 100000)
BEGIN
INSERT INTO GpsDataA ( X, Y ) VALUES (1, 2);
SET @i = @i + 1;
END
CREATE TABLE GpsDataB ( GpsDataID int PRIMARY KEY IDENTITY(1,1), X float, Y float );
DECLARE @i2 int = 0;
WHILE (@i2 < 100000)
BEGIN
INSERT INTO GpsDataB ( X, Y ) VALUES (1, 2);
SET @i2 = @i2 + 1;
END
-- 1m19s to insert to both tables
Вставка 200 тыс. Строк в одну таблицу:
CREATE TABLE GpsDataAB ( GpsDataID int PRIMARY KEY IDENTITY(1,1), X float, Y float );
DECLARE @i int = 0;
WHILE (@i < 200000)
BEGIN
INSERT INTO GpsDataAB ( X, Y ) VALUES (1, 2);
SET @i = @i + 1;
END
-- 1m19s to insert to one table
Выбор 10раз из двух таблиц:
DECLARE @i int = 0;
WHILE (@i < 10)
BEGIN
SELECT *
FROM GpsDataA
UNION ALL
SELECT *
FROM GpsDataB
SET @i = @i + 1;
END
- 10 секунд для запуска выше кода
Выбор 200 000 строк из одной таблицы:
DECLARE @i int = 0;
WHILE (@i < 10)
BEGIN
SELECT *
FROM GpsDataAB
SET @i = @i + 1;
END
- 10 секунд для запускавышеуказанный код