kaushik ahir Ответов: 3

Select * from table quary what is return in SQL?


В моей таблице всего 5 столбцов и 5000 записей...

Если я побегу
Select name, mobile, City, State, Cont, eamil from tbl_client

запрос выполняется только через 30 секунд...

Но если я побегу
Select * from tbl_client

этот запрос выполняется в течение 1 минуты.

Пожалуйста, решите меня

Что я уже пробовал:

Время Выполнения Запроса

Выберите имя, мобильный телефон, город,штат, продолжение, eamil из tbl_client 30 секунд

Выберите * из tbl_client 1 мин выше

RossMW

Вам нужно посмотреть на SQL-сервер. 5000 записей за 30-это плохая производительность. Индексация поможет мне предположить, что что-то фундаментально неправильно с вашей конфигурацией SQL server, настройкой или спецификацией

Kornfeld Eliyahu Peter

На самом деле-чтение таблицы без предложения where должно быть очень быстрым даже без индекса. Это простой цикл по страницам данных...
5000 записей за 30 секунд звучит как плохая настройка сервера (нет памяти?)!
И это ничего не говорит против индекса-индекс - ваш друг в истинном приложении...

Kornfeld Eliyahu Peter

Просто обратите внимание: 5000 записей-это даже не средний размер, уж точно не большой!!!

kaushik ahir

мой вопрос таков:
если я выберу * из таблицы, то получу только столбец или иначе

kaushik ahir

Потому Что Выше Запрос Выполняется 1 Мин. Время в sql Server 2012

kaushik ahir

моя таблица только две ячейки что отличается между 2 ячейками и *(все) в Select Quary in table

3 Ответов

Рейтинг:
2

Maciej Los

Вы можете решить ее сами. Вы должны прочитать следующие статьи только для того, чтобы выяснить причины чистой производительности запросов:
Семь грехов против производительности TSQL - простой разговор[^]
Контрольный список для анализа медленных запросов[^]


Рейтинг:
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 с результатами, установленными в "сетке". Это, конечно, не является точным отражением того, сколько времени занимает запрос, и, вероятно, потребуется это время, чтобы показать много данных.