Скорость ВЫБОРА по сравнению с набором в T-SQL

Думаю, я немного опоздал, но вы могли бы сделать это следующим образом:

tr{
	  height: 10px;
	  width:100px;
	}
	table{
	  width: 100%;
	}
	table, tr, td {
	  border: 1px solid black;
	}
	.container{
		display: flex;
	}
	.tableContainer{
		width:80%;
	}
	.submitContainer{
		display: flex;
		align-items: center;
		justify-content: center;
		width:20%;
	}
<div class="container">
	<div class='tableContainer'>
		<table>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
		</table>
	</div>
	<div class='submitContainer'>
		<button>CLick me </button>
	</div>
</div>

5
задан ninesided 9 October 2008 в 23:29
поделиться

3 ответа

НАБОР быстрее на единственных выполнениях. Можно доказать это достаточно легко. Имеет ли это значение, ваше дело, но я предпочитаю НАБОР, так как я не вижу точку ВЫБОРА, если весь код делает, присвоение. Я предпочитаю сохранять ВЫБОР ограниченным операторами SELECT от таблиц, представлений, и т.д.

Вот демонстрационный сценарий с количеством набора выполнений к 1:

SET NOCOUNT ON

DECLARE @runs int
DECLARE @i int, @j int
SET @runs = 1
SET @i = 0
SET @j = 0

DECLARE @dtStartDate datetime, @dtEndDate datetime


WHILE @runs > 0
    BEGIN
        SET @j = 0
        SET @dtStartDate = CURRENT_TIMESTAMP
        WHILE @j < 1000000
            BEGIN
                SET @i = @j
                SET @j = @j + 1
            END
        SELECT @dtEndDate = CURRENT_TIMESTAMP
        SELECT DATEDIFF(millisecond, @dtStartDate, @dtEndDate) AS SET_MILLISECONDS


        SET @j = 0
        SET @dtStartDate = CURRENT_TIMESTAMP
        WHILE @j < 1000000
            BEGIN
                SELECT @i = @j
                SET @j = @j + 1
            END
        SELECT @dtEndDate = CURRENT_TIMESTAMP
        SELECT DATEDIFF(millisecond, @dtStartDate, @dtEndDate) AS SELECT_MILLISECONDS

        SET @runs = @runs - 1
    END

РЕЗУЛЬТАТЫ:

Выполнение № 1:

SET_MILLISECONDS

5093

SELECT_MILLISECONDS

5186

Выполнение № 2:

SET_MILLISECONDS

4876

SELECT_MILLISECONDS

5466

Выполнение № 3:

SET_MILLISECONDS

4936

SELECT_MILLISECONDS

5453

Выполнение № 4:

SET_MILLISECONDS

4920

SELECT_MILLISECONDS

5250

Выполнение № 5:

SET_MILLISECONDS

4860

SELECT_MILLISECONDS

5093

Странно, если Вы проворачиваете количество, увеличивается для высказывания, 10, НАБОР начинает отставать.

Вот 10-управляемый результат:

SET_MILLISECONDS

5140

SELECT_MILLISECONDS

5266

SET_MILLISECONDS

5250

SELECT_MILLISECONDS

5466

SET_MILLISECONDS

5220

SELECT_MILLISECONDS

5280

SET_MILLISECONDS

5376

SELECT_MILLISECONDS

5280

SET_MILLISECONDS

5233

SELECT_MILLISECONDS

5453

SET_MILLISECONDS

5343

SELECT_MILLISECONDS

5423

SET_MILLISECONDS

5360

SELECT_MILLISECONDS

5156

SET_MILLISECONDS

5686

SELECT_MILLISECONDS

5233

SET_MILLISECONDS

5436

SELECT_MILLISECONDS

5500

SET_MILLISECONDS

5610

SELECT_MILLISECONDS

5266

9
ответ дан 13 December 2019 в 22:19
поделиться

Смотрите на "план выполнения", он должен сказать Вам стоимость каждой строки Вашего оператора

0
ответ дан 13 December 2019 в 22:19
поделиться

Я не ускоряюсь, проблема, она имеет отношение к больше с набором функций присвоения. Я столкнулся с этим только что и существует что-то новое в SQL Server 2008... Я слышал, попытайтесь гуглить Набор SQL по сравнению с Избранным SQL-СЕРВЕРОМ 2008

1
ответ дан 13 December 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: