SQL-запрос слишком долго -- sql поле с участием sql-server-2005 поле с участием optimization пол Связанный проблема

sql query taking too long


0
vote

проблема

русский

У меня есть простая «вставка в ..». Запрос, который принимает около 40 секунд для выполнения. Он просто принимает записи из одной таблицы и вставляет в другую.

  1. У меня есть указатель <код> F1 и <код> BatchID на <код> tbl_TempCatalogue таблица
  2. 146624 записи затронуты.
  3. <код> select сам не медленно, <код> %JAVA_HOME%in;C:UsersMikeAppDataRoaming pm;%ANDROID_HOME%platform-tools;%ANDROID_HOME% ools;%ANT_HOME%in;C:Program Files odejs; 0 медленно.

Полный запрос:

 <код> %JAVA_HOME%in;C:UsersMikeAppDataRoaming pm;%ANDROID_HOME%platform-tools;%ANDROID_HOME% ools;%ANT_HOME%in;C:Program Files odejs; 1  

Спасибо

Английский оригинал

I have simple "insert into.." query which is taking around 40 seconds to execute. It simply takes records from one table and inserts into another.

  1. I have index on F1 and BatchID on the tbl_TempCatalogue table
  2. 146624 records are affected.
  3. select itself is not slow, insert into is slow.

The complete query is:

insert into tbl_ItemPrice     (CATALOGUEVERSIONID,SERIESNUMBER,TYPE,PRICEFIELD,PRICE, PRICEONREQUEST,recordid) select  296 as CATALOGUEVERSIONID         ,ISNULL(F2,'-32768') as SERIESNUMBER         ,ISNULL(F3,'-32768') as TYPE         ,ISNULL(F4,'-32768') as PRICEFIELD,F5 as PRICE        ,(case  when F6 IS NULL  then null when F6 = '0' then 'False'                                  else 'True' end ) as PRICEONREQUEST        ,newid()  from tbl_TempCatalogue    where F1 = 450   and BATCHID = 72 

Thanks

</div
        
     
     

Список ответов

1
 
vote
vote
Лучший ответ
 
<Р> Вы говорите, что проблема заключается в INSERT не SELECT. Таким образом, возможные виновники (не в установленном порядке):
    .
  • Триггеры
  • распределение памяти
  • проверка внешнего ключа
  • проверочное ограничение проверка
  • я / о Узкие
  • неисправный диск
  • раздор с другими сессиями
<Р> Какие инструменты вы должны предпринять диагноз будет зависеть от того, какой продукт базы данных (и какая версия которой база данных) вы используете. Пожалуйста, включите эти детали в вашем вопросе.
 

You say the problem lies with the INSERT not the SELECT. So possible culprits are (in no fixed order):

  • triggers
  • storage allocation
  • foreign key validation
  • check constraint validation
  • i/o bottlenecks
  • faulty disk
  • contention with other sessions

What tools you have to undertake diagnosis will depend on which database product (and which version of which database) you are using. Please include these details in your question.

</div
 
 
2
 
vote
<Р> Вполне возможно, что если таблица большая, вы бы извлечь выгоду из индексов на F1 и BATCHID в таблице tbl_TempCatalogue. Пока не ясно, что СУБД вы используете, но большинство из них имеют приличные инструменты, чтобы показать вам план выполнения. Если вы делаете полное сканирование таблицы на большом столе, что может занять много времени для запуска. <Р> Кроме того, вы говорите, что «вставить в» медленно, но включают в себя только код для выбора. Является ли выбрать медленный сам по себе?
 

It's possible that if your table is large, you'd benefit from indexes on F1 and BATCHID in the tbl_TempCatalogue table. It's not clear what DBMS you're using, but most have decent tools to show you an execution plan. If you're doing full table scans on a large table, that may take a long time to run.

Also, you say that the "insert into" is slow, but you include just the code for the select. Is the select slow by itself?

</div
 
 
   
   
1
 
vote

Есть ли индекс на таблице TBL_TEMPCatalogue, чтобы помочь базе данных найти строки, где f1 = 450 и batchid = 72?

В противном случае ему, вероятно, нужно будет сканировать всю таблицу, чтобы их найти.

 

Is there an index on the tbl_TempCatalogue table to help the database find the rows where F1=450 and BATCHID=72?

Otherwise, it will probably need to scan the entire table to find them.

</div
 
 
1
 
vote

Ваш запрос выглядит нормально .. Но моя проблема находится в функции newid (), какая логика написана там, которая может попасть в производительность, пожалуйста, попробуйте запустить без newid () и увидеть время выполнения выбора оператора ..

Для решения такого типа проблемы выполните шаги

  1. См. Время выполнения только для выбора оператора
  2. Смотрите время исполнения оператора вставки с выбором
  3. См. Время выполнения для выбора оператора без NewID () Функции

После сравнения этих временных слотов вы сможете найти точный корневой причиной, что, где проблема проживает .. После того, как проживание этой проблемы, пожалуйста, опубликуйте его временные слоты, чтобы мы постараемся подойти этот вопрос.

 

Your query looks fine ..but my concern is in newid() function , what logic written there that may hit the performance, plese try to run without newid() and see the execution time of select statement..

to solve such type of issue follow the steps

  1. see execution time only for select statement
  2. see execution time of insert statement with select
  3. see execution time for select statement without newid() function

after comparing those time slots you will be able to locate the exact root cause that where the problem reside..after that please post that time slots so that we will try to sole this issue..

</div
 
 

Связанный проблема

2  Условная сумма на основе даты (сверхурочная сумма по контракту)  ( Conditional sum based on date sum overtime by contract ) 
У меня есть стол с <Код> ID (Commonse_id), <код> Name , <код> time_worked , <код> time_to_work , <код> Contract_Start_Date , <код> Date_of_Entry . Эта таблиц...

0  SQL Server - получить столбец, у которого есть конкретное значение  ( Sql server get column who have specific value ) 
У меня есть запрос SQL, который возвращает: <код> id | value 1 a 1 a 1 b 2 a 2 a Я хочу получить только...

4  Есть ли способ получить типы / имена неизвестного запроса БД, не выполняя его?  ( Is there a way to get types names of an unknown db query without executing it ) 
У меня есть веб-приложение, в котором пользователи вводят произвольные запросы SQL для последующей пакетной обработки. Мы хотим подтвердить синтаксис запроса,...

0  Linq 2 SQL Использование содержит [дубликат]  ( Linq 2 sql using contains ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

0  Значение цитаты в Zend Framework 2  ( Quote value into zend framework 2 ) 
Я работаю над приложением, используя ZF2. В моем приложении я должен вставить много строк в базу данных (около 900). У меня есть таблица модель для этого, п...

0  Вставка в Oracle последовательно  ( Are insert in oracle sequential ) 
У меня есть стол в Oracle. Я создаю несколько пакетных заданий. Каждая пакетная задача вставила некоторое количество записей в таблице. Я хотел узнать, буду...

1  Почему не будет DB2 позвольте мне иметь столбец в том случае?  ( Why wouldnt db2 let me have a column in where clause ) 
У меня есть удаленная база данных DB2, которую я получаю через ODBC. Когда у меня есть запрос, как <код> SELECT t.foo, t.bar, t.problemcolumn FROM problemta...

0  Как вы используете PHP и SQL для отправки данных таблицы на другую таблицу  ( How do you use php and sql to submit table data to another table ) 
У меня есть таблица полетов, и я использую цикл, чтобы распечатать информацию о рейсах, наряду с кнопкой отправки, кнопка, которая нажала, - это представленны...

2  Microsoft Access - SQL - внутренний внешний ключ  ( Microsoft access sql internal foreign key ) 
MS Access 2007 поддерживает внутренние зарубежные ключевые ключи в одной таблице? ...

18  Функция isnull в db2 sql?  ( Isnull function in db2 sql ) 
Есть ли исполнительное, эквивалентное isnull функции для db2? Представьте себе, что некоторые из наших продуктов являются внутренними, поэтому у них нет име...

1  Сумма количества членом  ( Sum of quantities by member ) 
Наличие некоторых проблем в операторе SQL для WordPress. Создан пользовательское поле «Member_Name», который проходит в порядке3 под ключ = Member_Name. Мне н...

-1  SQL MS Access Создайте псевдоним с использованием умножения столбцов  ( Sql ms access create an alias using multiplication of columns ) 
Здравствуйте, у меня возникли проблемы с новым столбцом «псевдоним» в моем коде SQL, умногая два значения столбца. Вопрос: Составьте запрос, чтобы показ...

3  Выбор таблицы свойств как столбцы  ( Selecting table of properties as columns ) 
У меня есть две таблицы, <код> things и <код> properties : <код> CREATE TABLE things ( id SERIAL PRIMARY KEY ); CREATE TABLE properties ( thing_id INT...

98  Подключение к серверу Microsoft SQL с помощью Python  ( Connecting to microsoft sql server using python ) 
<Р> Я пытаюсь подключиться к SQL через питон для запуска некоторых запросов на некоторых базах данных SQL на сервере Microsoft SQL. Из моих исследований в Инте...

1  Как я могу выбрать, используя пересечение стоимости разделенного запятой?  ( How can i select using an intersection of comma separated value ) 
У меня есть столбец, удерживает значения, разделенные запятыми. <код> 1,2,3 4,6,7 2,3,8 12234,5467,232445,232455,11223 с заданными критериями массива (н...

Связанный проблема

2  Условная сумма на основе даты (сверхурочная сумма по контракту) 
0  SQL Server - получить столбец, у которого есть конкретное значение 
4  Есть ли способ получить типы / имена неизвестного запроса БД, не выполняя его? 
0  Linq 2 SQL Использование содержит [дубликат] 
0  Значение цитаты в Zend Framework 2 
0  Вставка в Oracle последовательно 
1  Почему не будет DB2 позвольте мне иметь столбец в том случае? 
0  Как вы используете PHP и SQL для отправки данных таблицы на другую таблицу 
2  Microsoft Access - SQL - внутренний внешний ключ 
18  Функция isnull в db2 sql? 
1  Сумма количества членом 
-1  SQL MS Access Создайте псевдоним с использованием умножения столбцов 
3  Выбор таблицы свойств как столбцы 
98  Подключение к серверу Microsoft SQL с помощью Python 
1  Как я могу выбрать, используя пересечение стоимости разделенного запятой?