Рейтинг:
19
vani suresh
Привет Кошик,
В SSMS у них уже есть инструмент для времени выполнения .
Goto - & gt;меню: Query - & gt; нажмите на кнопку "Включить статистику клиента".
Запустите sql-запрос для обоих и проверьте, что вкладка "статистика клиента" появится на вкладке "Сообщения".
проверьте "сетевую статистику "и" статистику времени".
1)
Select * from tbl_client
2)
Select name, mobile, City, State, Cont, eamil from tbl_client
Если мы запустим запрос select *, то запрос select выполнит полную таблицу сканирования.
В то время как для другого запроса выберите col1,col2,col3, он просто сканирует индекс выбранных столбцов, и сетевой трафик также будет быстрым.
Если вы очень уверены, что имя столбца всегда будет оставаться неизменным, лучше определить запрос с помощью select col1, col2,...other wise user select *.(Но сетевой трафик будет медленным).
Спасибо
:)
Рейтинг:
1
OriginalGriff
Во-первых, в вашей таблице есть 5 столбцов, но вы перечисляете 6 значений для возврата...
Когда я запускаю аналогичный запрос в своей БД, я получаю один и тот же порядок величины ответа для каждого из них в общей сложности 28767 строк для каждого запроса.
Stopwatch s1 = new Stopwatch();
Stopwatch s2 = new Stopwatch();
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
SqlCommand cmd1 = new SqlCommand("SELECT ID, UserID, EnterDate, Total, AU1, AU2, DE, ED, EN, OR, PA FROM dbo.MyTable", con);
using (SqlDataAdapter da = new SqlDataAdapter(cmd1))
{
DataTable dt = new DataTable();
s1.Start();
da.Fill(dt);
s1.Stop();
}
SqlCommand cmd2 = new SqlCommand("SELECT * FROM dbo.MyTable", con);
using (SqlDataAdapter da = new SqlDataAdapter(cmd2))
{
DataTable dt = new DataTable();
s2.Start();
da.Fill(dt);
s2.Stop();
}
}
Console.WriteLine("{0}:{1}", s1.ElapsedTicks, s2.ElapsedTicks);
Значения, которые я получаю для последовательных запусков, следующие:
5105014:2635936
3679955:6183447
5110977:4361559
4260305:3936449
Так что...я бы внимательно посмотрел на то, как именно вы извлекаете строки и как вы их рассчитываете.
kaushik ahir
это мой вопрос...почему вы получаете разницу во времени...Запрос оба одинаковы..!! Почему?????
OriginalGriff
Что ж...А я - нет, и мое время намного короче твоего на много-много рядов. Кроме того, БД, которую я использовал, находилась на интернет-сервере, поэтому мое время "туда и обратно" также включает задержку интернета.
Если вы посмотрите на мои цифры, они не согласуются по этой причине: иногда один быстрее, иногда другой.
Я подозреваю, что запрос "*" на практике может быть немного быстрее, потому что требуется меньше разбора команд и выбор столбца проще, но разница, которую я получаю, тривиальна: в терминах 1/10 или даже 1/000 секунды большую часть времени.
Я думаю, вам нужно посмотреть, как именно вы получаете доступ к своим данным и как вы их синхронизируете - потому что, если вы не находитесь на сильно используемом, медленном SQL-сервере, цифры, которые вы показываете, не имеют большого смысла.
F-ES Sitecore
Вы ожидаете, что select * будет медленнее, так как он должен обнаружить имена полей для возврата перед выполнением, но, как вы говорите, мы говорим о наименьшей доле секунды.
Я подозреваю, что ОП синхронизирует свои запросы, видя, сколько времени требуется для запуска в SQL Management Studio с результатами, установленными в "сетке". Это, конечно, не является точным отражением того, сколько времени занимает запрос, и, вероятно, потребуется это время, чтобы показать много данных.