Optimization of a query
Hi All,
How can i optimize a query?
To acheive all those task as madrid specified you will have to understand the physical organization of data,sql processing steps,why yours query taking too much io relatively small number of fetching rows (may be there is full table scan or yours data block is scattered here and there),morever,you have to concentrate common sense of indexing e.g have you used appropriate candidate index otherwise futile indexed column will be waste of space as well it will hit for no reason in yours db for each DML,remember full table scan is not good alls the time and its also not bad alls the time (it depends on yours fetching blocks ratio to alls block in yours table AFAIK optimizer is too smart enough if you provide stats for FTS or not) sometime there is also issue with the locking mechnasim which will hang yours not only query but also yours entire database by creating wait events.There is also much more and more and more....still i am not aware perfectly..
Still i will say one mantra by thomas kyte there is really no silver bullet if it is then it would be by default.
But you may be wondering how can i go through alls that ,as my opinion would goes to first digest the tkprof and explain plan rest of them i hope will be covered gradually,as far as long you will concentrate on tkprof and explain plan you will getting awareness all those issued as madrid posted and in my first paragraph.
Khurram
Similar Messages
-
Trying to optimize this simple query
Hi,
I am trying to optimize this simple query but the two methods I am trying actually make things worse.
The original query is:
SELECT customer_number, customer_name
FROM bsc_pdt_account_mv
where rownum <= 100
AND Upper(customer_name) like '%SP%'
AND customer_id IN
SELECT cust_id FROM bsc_pdt_assoc_sales_force_mv
WHERE area_identifier IN (
SELECT area_identifier FROM bsc_pdt_assoc_sales_force_mv
WHERE ad_identifier = '90004918' or rm_identifier = '90004918' or tm_identifier = '90004918'
The result set of this query returns me the first 100 rows in 88 seconds and they are all distinct by default (don't know why they are distinct).
My first attempt was to try to use table joins instead of the IN conditions:
SELECT
distinct -- A: I need to use distinct now
customer_number, customer_name
FROM bsc_pdt_account_mv pdt,
bsc_pdt_assoc_sales_force_mv asf,
SELECT distinct area_identifier FROM bsc_pdt_assoc_sales_force_mv
WHERE ad_identifier = '90004918' or rm_identifier = '90004918' or tm_identifier = '90004918'
) area
where
area.area_identifier = asf.area_identifier
AND asf.cust_id = pdt.customer_id
AND Upper(customer_name) like '%SP%'
AND rownum <= 100 -- B: strange when I comment this out
order by 1
I dont understand two things with this query. First issue, I now need to put in the distinct because the result set is not distinct by default. Second issue (very strange), when I put the rownum condition (<100) I get two rows in 1.5 seconds. If I remove the condition, I get 354 rows (whole result set) in 326 seconds.
My second attempt was to use EXISTS instead of IN:
SELECT
customer_number, customer_name
FROM bsc_pdt_account_mv pdt
where Upper(customer_name) like '%SP%'
AND rownum <= 100
AND EXISTS
select 1 from
bsc_pdt_assoc_sales_force_mv asf,
SELECT distinct area_identifier FROM bsc_pdt_assoc_sales_force_mv
WHERE ad_identifier = '90004918' or rm_identifier = '90004918' or tm_identifier = '90004918'
) area
where
area.area_identifier = asf.area_identifier
AND asf.cust_id = pdt.customer_id
This query returns a similar distinct result set as teh original one but takes pretty much the same time (87 seconds).The query below hangs when run in TOAD or PL/SQL Dev. I noticed there is no rows returned from the inner table for this condition.
SELECT customer_number, customer_name
FROM
bsc_pdt_account_mv pdt_account
where rownum <= 100
AND exists (
SELECT pdt_sales_force.cust_id
FROM bsc_pdt_assoc_sales_force_mv pdt_sales_force
WHERE pdt_account.customer_id = pdt_sales_force.cust_id
AND (pdt_sales_force.rm_identifier = '90007761' or pdt_sales_force.tm_identifier = '90007761') )
ORDER BY customer_name
-- No rows returned by this query
SELECT pdt_sales_force.cust_id
FROM bsc_pdt_assoc_sales_force_mv pdt_sales_force
WHERE pdt_sales_force.rm_identifier = '90007761' or pdt_sales_force.tm_identifier = '90007761' -
Performance optimization on select query for all entries
Hi All,
I want to optimize the select query in my Program.
The select query is taking lot of time to search the records for the given condition in the where clause
and more interestingly there are no records fetched from the database as the where condition does not matches.
It is taking more than 30 min to search the record and the result is no record found.
Below is my select query. I have also created the secondary Index for the same.
In My opinion FOR ALL ENTRIES is taking lot of time. Because there are more than 1200 records in internal table t_ajot
select banfn bnfpo bsart txz01 matnr Werks lgort matkl reswk menge meins flief ekorg
INTO CORRESPONDING FIELDS OF TABLE t_req
FROM eban
FOR ALL ENTRIES IN t_ajot
WHERE matkl >= t_ajot-matkl_low
AND matkl <= t_ajot-matkl_high
AND werks = t_ajot-werks
AND loekz = ' '
AND badat IN s_badat
AND bsart = 'NB'.
Please suggest.Hi,
that,
FOR ALL ENTRIES IN t_ajot
WHERE matkl >= t_ajot-matkl_low
AND matkl <= t_ajot-matkl_high
AND werks = t_ajot-werks
AND loekz = ' '
AND badat IN s_badat
AND bsart = 'NB'.
looks strange.
However:
How does your index look like?
What executoin plan do you get?
How do the statistics look like?
Whats the content of the variables t_ajot-... and s_badata?
Kind regards,
Hermann -
What is the best way to Optimize a SQL query : call a function or do a join?
Hi, I want to know what is the best way to optimize a SQL query, call a function inside the SELECT statement or do a simple join?
Hi,
If you're even considering a join, then it will probably be faster. As Justin said, it depends on lots of factors.
A user-defined function is only necessary when you can't figure out how to do something in pure SQL, using joins and built-in functions.
You might choose to have a user-defined function even though you could get the same result with a join. That is, you realize that the function is slow, but you believe that the convenience of using a function is more important than better performance in that particular case. -
Believe the bug to be related to the new cardinality estimator. In my case joining 7 tables it took 4 seconds to see the query execution plan, with 8 tables it took 1 minute and with 9 tables 15
minutes! the actual processing of the query plan was sub second. (each table has only two records...)
It looks as if there is a workload in the cardinality estimator that escalates as the number of tables and join columns increases.
We have a number of these queries in our application and the bug is a showstopper for our customers. They will have to set compatibility level to 110 (sqlserver 2012) to run the app. Then they should
probably not upgrade from 2012...
Is this a known bug? What is the bug number? How can I follow the bug to see when it is fixed?
Here is my testcase: (first building tables and data, and then the query with some comments. A version spending 15 minutes in the optimizer, takes 0 seconds to complete with the hint "option (QUERYTRACEON 9481) ". we can't use this
hint in the application because no dba will allow an application like ours to run as sysadmin...
SCRIPT:
-- Example has one table containing 25 rows. another containing 2 rows.
-- The one with two rows is joined in several times.
-- In the original query each of these joins were to separate tables.
-- I use this simplification because it makes it easier to build the testcase.
------------ CREATE TEST CASE ----------
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[oleclient](
[acc_f_agio] [varchar](25) NOT NULL DEFAULT (' '),
[acc_f_dag] [varchar](25) NOT NULL DEFAULT (' '),
[acc_notes_ap] [varchar](25) NOT NULL DEFAULT (' '),
[acc_notes_ar] [varchar](25) NOT NULL DEFAULT (' '),
[acc_per_cost] [varchar](25) NOT NULL DEFAULT (' '),
[acc_per_inc] [varchar](25) NOT NULL DEFAULT (' '),
[acc_reverse] [varchar](25) NOT NULL DEFAULT (' '),
[acc_undec_ap] [varchar](25) NOT NULL DEFAULT (' '),
[acc_undec_ar] [varchar](25) NOT NULL DEFAULT (' '),
[acc_vat_pay] [varchar](25) NOT NULL DEFAULT (' '),
[attr_id_balance] [varchar](4) NOT NULL DEFAULT (' '),
[bal_acc_v2] [varchar](25) NOT NULL DEFAULT (' '),
[bal_acc_v3] [varchar](25) NOT NULL DEFAULT (' '),
[balance_acc] [varchar](25) NOT NULL DEFAULT (' '),
[bank_fee_acc] [varchar](25) NOT NULL DEFAULT (' '),
[bflag] [int] NOT NULL DEFAULT ((0)),
[client] [varchar](25) NOT NULL DEFAULT (' '),
[client_name] [varchar](255) NOT NULL DEFAULT (' '),
[comp_reg_no] [varchar](25) NOT NULL DEFAULT (' '),
[compress_flag] [tinyint] NOT NULL DEFAULT ((0)),
[country] [varchar](255) NOT NULL DEFAULT (' '),
[country_code] [varchar](25) NOT NULL DEFAULT (' '),
[cur_client] [varchar](25) NOT NULL DEFAULT (' '),
[cur_item] [tinyint] NOT NULL DEFAULT ((0)),
[cur_type] [varchar](25) NOT NULL DEFAULT (' '),
[cur_type_tri] [varchar](25) NOT NULL DEFAULT (' '),
[curr_period] [int] NOT NULL DEFAULT ((0)),
[currency] [varchar](25) NOT NULL DEFAULT (' '),
[currency_tri] [varchar](25) NOT NULL DEFAULT (' '),
[currency_v2] [varchar](25) NOT NULL DEFAULT (' '),
[currency_v3] [varchar](25) NOT NULL DEFAULT (' '),
[diff_acc_v2] [varchar](25) NOT NULL DEFAULT (' '),
[diff_acc_v3] [varchar](25) NOT NULL DEFAULT (' '),
[diff_account] [varchar](25) NOT NULL DEFAULT (' '),
[diff_chk_v2] [tinyint] NOT NULL DEFAULT ((0)),
[diff_chk_v3] [tinyint] NOT NULL DEFAULT ((0)),
[dim_v2_type] [varchar](25) NOT NULL DEFAULT (' '),
[dim_v3_type] [varchar](25) NOT NULL DEFAULT (' '),
[employer_id] [varchar](12) NOT NULL DEFAULT (' '),
[header] [varchar](30) NOT NULL DEFAULT (' '),
[header2] [varchar](30) NOT NULL DEFAULT (' '),
[headquarter] [varchar](25) NOT NULL DEFAULT (' '),
[language] [varchar](2) NOT NULL DEFAULT (' '),
[last_update] [datetime] NOT NULL DEFAULT (CONVERT([datetime],'19000101 00:00:00:000',(9))),
[leg_act_cli] [varchar](25) NOT NULL DEFAULT (' '),
[max_inv_diff] [decimal](28, 3) NOT NULL DEFAULT ((0.0)),
[max_inv_diff_v2] [decimal](28, 3) NOT NULL DEFAULT ((0.0)),
[max_inv_diff_v3] [decimal](28, 3) NOT NULL DEFAULT ((0.0)),
[max_pay_diff] [decimal](28, 3) NOT NULL DEFAULT ((0.0)),
[max_pay_diff_v2] [decimal](28, 3) NOT NULL DEFAULT ((0.0)),
[max_pay_diff_v3] [decimal](28, 3) NOT NULL DEFAULT ((0.0)),
[municipal] [varchar](25) NOT NULL DEFAULT (' '),
[overrun_pct] [decimal](28, 8) NOT NULL DEFAULT ((0.0)),
[pay_client] [varchar](25) NOT NULL DEFAULT (' '),
[pay_diff_acc_g] [varchar](25) NOT NULL DEFAULT (' '),
[pay_diff_acc_l] [varchar](25) NOT NULL DEFAULT (' '),
[pay_ref] [varchar](25) NOT NULL DEFAULT (' '),
[period_no] [smallint] NOT NULL DEFAULT ((0)),
[remind_ref] [varchar](20) NOT NULL DEFAULT (' '),
[rev_vat_disc_ap] [tinyint] NOT NULL DEFAULT ((0)),
[rev_vat_disc_ar] [tinyint] NOT NULL DEFAULT ((0)),
[sys_setup_code] [varchar](2) NOT NULL DEFAULT (' '),
[tax_office_no] [varchar](50) NOT NULL DEFAULT (' '),
[tax_office_ref] [varchar](20) NOT NULL DEFAULT (' '),
[tax_system] [varchar](25) NOT NULL DEFAULT (' '),
[user_id] [varchar](25) NOT NULL DEFAULT (' '),
[vat_reg_no] [varchar](25) NOT NULL DEFAULT (' '),
[agrtid] [bigint] IDENTITY(1,1) NOT NULL,
UNIQUE NONCLUSTERED
[agrtid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('8081','8181',' ',' ','2442','1481','9998',' ',' ','1320',' ','9998',' ',' ','8110','0','UK','Agresso Demo UK','987654321012','0','United Kingdom','GB','UK','1','1','EU','200409','GBP','EUR','EUR','USD','9998','9998','9998','1','0','EU','$',' ','Agresso
demo','Corporate Office','NO','EN','2004-09-27 12:39:00.000','UK',0.020,0.000,0.000,0.100,0.000,0.000,'0301',0.00000000,'UK','9998','9998','Jim Smith','12','Mike Anderson','0','0','EN','Bristol Brunel','V123/123',' ','JOSUTTON','123456789101');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('8060','8160',' ',' ','2960','1480','1490',' ',' ',' ',' ',' ',' ',' ','7770','0','N1','N1 - Énklient','971332421','0','Norway','NO','N1','0','1',' ','200701','NOK',' ','EUR',' ',' ',' ','9999','0','0','E',' ','971332421','Agresso Demo Norge (NO)','Agresso
Demo Norge (NO)','NO','NO','2007-01-26 08:31:00.000','N1',0.050,0.000,0.000,0.500,0.000,0.000,'0301',5.00000000,'N1','9999','9999',' ','12',' ','0','0','NO',' ',' ',' ','SYSNO','971332421');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('900000','900000',' ',' ',' ',' ','900100',' ',' ',' ',' ',' ',' ',' ','470000','0','BE','DEMO Belgie',' ','0','Belgium','BE','BE','0','1',' ','200208','EUR',' ','USD','GBP',' ',' ','900100','0','0','2','3',' ',' ','Agresso Business World','BE','EN','2005-11-18
17:07:00.000','BE',0.050,0.000,0.000,0.050,0.000,0.000,'2018',0.00000000,'BE','900100','900100',' ','12',' ','0','0','BT',' ',' ',' ','SYSBE','BE461149381');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('8030','8040',' ',' ','1250','2450','9998',' ',' ',' ',' ',' ',' ',' ','8060','0','A99','Seneca N.V. - Reporting / Intellagent',' ','0',' ','NL','A99','0','1',' ','201105','EUR',' ','USD',' ',' ',' ','9998','0','0','2',' ',' ','Seneca N.V. - Report / Intell','Seneca
N.V. - Report / Intell','A01','EN','2011-05-19 12:19:59.000','A99',0.010,0.000,0.000,5.000,0.000,0.000,' ',0.00000000,'A99','9998','9998',' ','12',' ','0','0','EN',' ',' ',' ','SYSTEM',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('766000','666000','445860','445870','486000','487000',' ','445806','445807','445806',' ',' ','DEVISES',' ',' ','3','FR','Agresso Demo France',' ','0','France','FR','FR','1','1','1','200509','EUR','EUR',' ','FRF',' ','DEVISES','471000','0','1',' ','1',' ','Agresso
demo France','Agresso demo France','FR','FR','2005-08-30 09:27:00.000','FR',0.100,0.000,0.500,10.000,0.000,0.000,'92',0.00000000,'FR',' ',' ',' ','12',' ','0','0','FR',' ',' ',' ','SYSFR','FR12345678');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
(' ',' ',' ',' ',' ',' ','9999',' ',' ',' ',' ',' ',' ',' ',' ','0','AU','Agresso Australia','123456789','0','Australia','AU','AU','0','1',' ','200708','AUD',' ',' ',' ',' ',' ','9999','0','0',' ',' ',' ','Agresso demo Australia','Corporate Office','AU','AU','2007-04-19
12:40:00.000','AU',0.000,0.000,0.000,0.000,0.000,0.000,' ',0.00000000,'AU','9999','9999',' ','12',' ','0','0','AU',' ',' ',' ','SYSAU','123456789')
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('8060','8160',' ',' ','2960','1480','1490',' ',' ',' ',' ',' ',' ',' ','7770','0','NO','Agresso Demo Norge (NO)','971332425','0','Norway','NO','NO','0','1',' ','201401','NOK',' ','EUR',' ',' ',' ','9999','0','0','E',' ','971332425','Agresso Demo Norge (NO)','Agresso
Demo Norge (NO)','NO','NO','2014-01-11 12:34:54.000','NO',0.050,0.000,0.000,0.500,0.000,0.000,'0301',5.00000000,'NO','9999','9999',' ','12',' ','0','0','NO',' ',' ',' ','SYSNO','971332425');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('9999','9999',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','9999','0','SF','Agresso Demo SF',' ','0','Finland','SF','SF','0',' ',' ','0','FIM',' ',' ',' ',' ',' ','9999','0','0',' ',' ',' ','Agresso Demo','Hovedkontoret','SF','SE','1996-01-18 03:25:00.000','SF',0.000,0.000,0.000,0.000,0.000,0.000,'
',0.00000000,'SF','9999','9999',' ','12',' ','0','0','SF',' ',' ',' ','SYSTEM',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','US','Agresso Demo Corp.',' ','0',' ','US','US','1',' ',' ','199702','USD',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ','Agresso Demo Corp.','Headquarter','US','US','1997-01-21 02:45:00.000','US',0.020,0.000,0.000,5.000,0.000,0.000,'
',0.00000000,'US',' ',' ','John Smith','12','Elsa Beskow','0','0','EN',' ',' ',' ','SYSNO',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('8081','8181',' ',' ','2442','1481','9998',' ',' ','1320',' ','9998',' ',' ','8110','0','EN','Agresso Demo','987654321012','0','United Kingdom','GB','EN','1','1','EU','201401','GBP','EUR','EUR','USD','9998','9998','9998','1','0','EU','$',' ','Agresso demo','Corporate
Office','NO','EN','2014-01-06 10:20:58.000','EN',0.020,0.010,0.000,0.100,0.000,0.000,'0301',0.00000000,'EN','9998','9998','Jim Smith','12','Mike Anderson','0','0','EN',' ',' ',' ','SYSEN','123456789101');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','10','Test company 10 (for multiclient)',' ','0',' ','GB','EN','0','1',' ','200801','GBP',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ','Test company 10 (multiclient)','Test company 10 (multiclient)','EN','EN','2008-05-07
10:57:51.000','EN',0.010,0.000,0.000,1.000,0.000,0.000,' ',0.00000000,'EN',' ',' ',' ','12',' ','0','0','EN',' ',' ',' ','SYSEN',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('4840','6880',' ',' ','1900','3900',' ','1410','3810','3810',' ','9998','9998',' ',' ','1','DE','D3 Demo Fibu/Projekt/Logistik','1277777001','0',' ','DE','DE','1','1','1','200204','EUR','EUR','USD','DEM','9998','9998','9998','1','1','2','1',' ','Agresso Demo
Fibu/Pr/Log','Agresso Demo Fibu/Pr/Log','DE','DE','2002-04-03 17:28:00.000','DE',0.050,0.000,0.000,5.000,0.000,0.000,' ',0.00000000,'DE','4720','4720',' ','12',' ','0','0','DE','Finanzamt München II',' ',' ','SYSDE','DE888999777');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','PF','Performance test company',' ','0',' ','GB','PF','0','1',' ','200910','GBP',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','PF','EN','2009-10-14 15:49:10.000','PF',0.000,0.000,0.000,0.000,0.000,0.000,'
',0.00000000,'PF',' ',' ',' ','12',' ','0','0','EN',' ',' ',' ','SYSEN',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','01','RD Reporting Team - Test Client 01',' ','0',' ','NO','01','0',' ',' ','201101',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','01','EN','2013-10-22 13:29:46.000','01',0.000,0.000,0.000,0.000,0.000,0.000,'
',0.00000000,'01',' ',' ',' ','12','Vidar Bjørnson','0','0','EN',' ',' ',' ','REPDEV',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','02','RD Reporting Team - Test Client 02',' ','0',' ','NO','02','0',' ',' ','201101',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','01','EN','2013-10-22 13:30:11.000','02',0.000,0.000,0.000,0.000,0.000,0.000,'
',0.00000000,'02',' ',' ',' ','12','Vidar Bjørnson','0','0','EN',' ',' ',' ','REPDEV',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','03','RD Reporting Team - Test Client 03',' ','0',' ','NO','03','0',' ',' ','201101',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','01','EN','2013-10-22 13:30:47.000','03',0.000,0.000,0.000,0.000,0.000,0.000,'
',0.00000000,'01',' ',' ',' ','12','Vidar Bjørnson','0','0','EN',' ',' ',' ','REPDEV',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','9998',' ',' ',' ','0','FP','FIN PROC Test Project','321456987','0',' ','NO','FP','0','1','1','201206','EUR','EUR','USD','USD','9998','9998',' ','1','1','2','2',' ','FIN PROC Test Project','FIN PROC Test Project','FP','EN','2012-09-24
10:43:27.000','FP',0.000,0.000,0.000,0.000,0.000,0.000,' ',0.00000000,'FP',' ',' ',' ','12',' ','0','0','EN',' ',' ',' ','FRODE','321456987MVA');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','DM','Agresso Deployment Manager',' ','0',' ','NO','DM','0',' ',' ','201301',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','DM','EN','2013-11-06 13:55:17.000','DM',0.000,0.000,0.000,0.000,0.000,0.000,'
',0.00000000,'DM',' ',' ',' ','12',' ','0','0','EN',' ',' ',' ','SYSEN',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('3960','7960',' ',' ','1790','2990','2991',' ',' ',' ',' ',' ',' ',' ','6570','0','S1','Agresso Demo Client S1','556558-7893','0','Sweden','SE','S1','1','1',' ','200401','SEK',' ','NOK','EUR','8322','8321','3740','1','1','3','6','5565587893',' ','Utbildningsföretaget
AB','SE','SE','2005-02-10 22:04:00.000','S1',0.500,0.000,0.000,0.500,0.000,0.000,' ',0.00000000,'S1','3740','3740','Anna Kronstam','12','Thomas Jelf','0','0','SE',' ',' ',' ','SYSEN','SE556558789301');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('3960','7960',' ',' ','1790','2990','2991',' ',' ',' ',' ',' ',' ',' ','6570','0','S2','Agresso Demo Client S2','556558-7893','0','Sweden','SE','S2','1','1',' ','200202','SEK',' ','NOK','EUR','8322','8321','3740','1','1','3','6','5565587893',' ','Utbildningsföretaget
AB','SE','SE','2005-01-17 13:20:00.000','S2',0.500,0.000,0.000,0.500,0.000,0.000,' ',0.00000000,'S2','3740','3740','Anna Kronstam','12','Thomas Jelf','0','0','SE',' ',' ',' ','SYSSE','SE556558789301');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('910156','910166',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','NL','DEMO Nederland','KVK9937465','0','Holland','NL','NL','0','1',' ','200708','EUR',' ',' ',' ',' ',' ','999999','0','0',' ',' ',' ','Global Trada N.V.','Global Trada N.V.','NL','NL','2007-08-15
13:41:00.000','NL',50000.000,0.000,0.000,50000.000,0.000,0.000,'3994 DB',0.00000000,'NL','470720','470720',' ','12',' ','0','0','NL',' ',' ',' ','ROB','NL009404296B01');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('4664','4730',' ',' ','4755',' ',' ',' ',' ',' ',' ',' ',' ',' ','4755','0','DK','Agresso Demo Denmark',' ','0','Denmark','DK','DK','0','1',' ','0','DKK',' ',' ',' ',' ',' ',' ','0','0',' ',' ','0123456789','Agresso Denmark','Agresso Denmark','DK','DK','2005-10-14
08:40:00.000','DK',0.100,0.000,0.000,0.100,0.000,0.000,' ',0.00000000,'DK',' ',' ',' ','12',' ','0','0','DK',' ',' ',' ','SYSDK',' ');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('76800','66800',' ',' ','48000','48500','99999','47201','47701',' ',' ',' ',' ',' ','66910','1','SP','Agresso Spain',' ','0','Spain','ES','SP','0','1','1','200804','EUR','EUR','GBP',' ',' ',' ','99999','0','0','2',' ',' ','Agresso DEMO S.A','Agresso DEMO S.A','SP','ES','2008-04-07
14:01:38.000','SP',0.010,0.000,0.000,0.010,0.000,0.000,' ',0.50000000,'SP','99999','99999','Dpto.Aministración','12','Dpto.Riesgos','0','0','ES','00007307','18ru0456',' ','SYSES','B18389742');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('3960','7960',' ',' ','1790','2990','2991',' ',' ',' ',' ','8439',' ',' ','6570','0','SE','UTBILDNINGSFÖRETAGET AB','2021001235','0',' ','SE','SE','0','1',' ','200707','SEK',' ','EUR',' ','8439',' ','3740','1','0','2',' ',' ','Masterföretaget AB','Masterföretaget
AB','SE','SE','2008-06-09 12:38:43.000','SE',0.500,0.000,0.000,0.500,0.000,0.000,'STLM',0.05000000,'SE','3740','3740',' ','12',' ','0','0','SE',' ','Stockholm',' ','SYSEN','SE202100123501');
insert into oleclient (
acc_f_agio, acc_f_dag, acc_notes_ap, acc_notes_ar, acc_per_cost, acc_per_inc, acc_reverse, acc_undec_ap, acc_undec_ar, acc_vat_pay, attr_id_balance, bal_acc_v2, bal_acc_v3, balance_acc,
bank_fee_acc, bflag, client, client_name, comp_reg_no, compress_flag, country, country_code, cur_client, cur_item, cur_type, cur_type_tri, curr_period, currency, currency_tri,
currency_v2, currency_v3, diff_acc_v2, diff_acc_v3, diff_account, diff_chk_v2, diff_chk_v3, dim_v2_type, dim_v3_type, employer_id, header, header2, headquarter, language,
last_update, leg_act_cli, max_inv_diff, max_inv_diff_v2, max_inv_diff_v3, max_pay_diff, max_pay_diff_v2, max_pay_diff_v3, municipal, overrun_pct, pay_client, pay_diff_acc_g,
pay_diff_acc_l, pay_ref, period_no, remind_ref, rev_vat_disc_ap, rev_vat_disc_ar, sys_setup_code, tax_office_no, tax_office_ref, tax_system, user_id, vat_reg_no )
values
('8081','8181',' ',' ','2442','1481','9998','1301','1307','1320',' ','9998',' ',' ','8110','1','IT','IT - Client',' ','0','Italy','IT','IT','1','EU','EU','200601','EUR','EUR','EUR','USD','9998','9998','9998','1','0','EU','$','CODE SIA','Agresso demo Italia','Corporate
Office','IT','IT','2006-09-28 08:46:00.000','IT',0.020,0.000,0.000,0.100,0.000,0.000,'0301',0.00000000,'IT','9998','9998','Jim Smith','12','Mike Anderson','0','0','IT','Tax authority province','Auto-no011299',' ','SYSEN','11465420153');
go
CREATE UNIQUE NONCLUSTERED INDEX [aioleclient1] ON [dbo].[oleclient]
[client] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
CREATE TABLE [dbo].[Htable1](
[amount] [decimal](28, 3) NOT NULL DEFAULT ((0)),
[cur_amount] [decimal](28, 3) NOT NULL DEFAULT ((0)),
[value_2] [decimal](28, 3) NOT NULL DEFAULT ((0)),
[value_3] [decimal](28, 3) NOT NULL DEFAULT ((0)),
[currency] [varchar](25) NOT NULL DEFAULT (' '),
[client] [varchar](25) NOT NULL DEFAULT (' '),
[asset_id] [varchar](25) NOT NULL DEFAULT (' '),
[depr_book_id] [varchar](25) NOT NULL DEFAULT (' '),
[input_id] [bigint] NOT NULL DEFAULT ((0)),
[amount_type] [char](25) NOT NULL DEFAULT (' '),
[reval_year] [int] NOT NULL DEFAULT ((0)),
[trans_seq] [int] NOT NULL DEFAULT ((0)),
[sequence_no] [int] NOT NULL DEFAULT ((0)),
[at_trans_date] [datetime] NOT NULL DEFAULT (CONVERT([datetime],'19000101',(112))),
[agrtid] [bigint] IDENTITY(1,1) NOT NULL,
UNIQUE NONCLUSTERED
[agrtid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT INTO Htable1 (at_trans_date,amount,amount_type,asset_id,client,cur_amount,currency,depr_book_id,input_id,reval_year,sequence_no,trans_seq,value_2,value_3)
VALUES ('20140603' ,0.00000000,'GLN','BM','EN',0.00000000,'GBP','BUSINESS',563,0,29,0,0.00000000,0.00000000 )
GO
INSERT INTO Htable1 (at_trans_date,amount,amount_type,asset_id,client,cur_amount,currency,depr_book_id,input_id,reval_year,sequence_no,trans_seq,value_2,value_3)
VALUES ('20140603' ,0.00000000,'GLN','BM','EN',0.00000000,'GBP','BUSINESS',563,0,30,0,0.00000000,0.00000000 )
GO
--=================================================================================
-- The following query takes 15 minutes on my computer to give an execution plan. Fetching the data takes no additional time.
-- removing one table (CACHED88) from the query brings the time down to 59 seconds.
-- removing one more (CACHED87) brings it down to 4 seconds.
-- adding the hint "option (QUERYTRACEON 9481)" to the first case, brings it down from 15 minutes to less than one second!
SELECT
CACHED83.amount - ( CACHED76.amount + CACHED75.amount + CACHED85.amount + CACHED86.amount + CACHED87.amount + CACHED88.amount) AS amount,
CACHED83.amount - ( CACHED76.amount + CACHED75.amount + CACHED85.amount + CACHED86.amount + CACHED87.amount + CACHED88.amount) AS cur_amount,
c.currency
FROM
Htable1 tab1 ,
Htable1 CACHED83 ,
Htable1 CACHED76 ,
Htable1 CACHED75 ,
Htable1 CACHED85 ,
Htable1 CACHED86 ,
Htable1 CACHED87 ,
Htable1 CACHED88 ,
oleclient c
WHERE
tab1.client = c.client AND
tab1.amount_type = 'GLN' AND
tab1.asset_id = CACHED83.asset_id AND
tab1.depr_book_id = CACHED83.depr_book_id AND
tab1.client = CACHED83.client AND
tab1.input_id = CACHED83.input_id AND
tab1.reval_year = CACHED83.reval_year AND
tab1.trans_seq = CACHED83.trans_seq AND
tab1.sequence_no = CACHED83.sequence_no AND
tab1.asset_id = CACHED76.asset_id AND
tab1.depr_book_id = CACHED76.depr_book_id AND
tab1.client = CACHED76.client AND
tab1.input_id = CACHED76.input_id AND
tab1.reval_year = CACHED76.reval_year AND
tab1.trans_seq = CACHED76.trans_seq AND
tab1.sequence_no = CACHED76.sequence_no AND
tab1.asset_id = CACHED75.asset_id AND
tab1.depr_book_id = CACHED75.depr_book_id AND
tab1.client = CACHED75.client AND
tab1.input_id = CACHED75.input_id AND
tab1.reval_year = CACHED75.reval_year AND
tab1.trans_seq = CACHED75.trans_seq AND
tab1.sequence_no = CACHED75.sequence_no AND
tab1.asset_id = CACHED85.asset_id AND
tab1.depr_book_id = CACHED85.depr_book_id AND
tab1.client = CACHED85.client AND
tab1.input_id = CACHED85.input_id AND
tab1.reval_year = CACHED85.reval_year AND
tab1.trans_seq = CACHED85.trans_seq AND
tab1.sequence_no = CACHED85.sequence_no AND
tab1.asset_id = CACHED86.asset_id AND
tab1.depr_book_id = CACHED86.depr_book_id AND
tab1.client = CACHED86.client AND
tab1.input_id = CACHED86.input_id AND
tab1.reval_year = CACHED86.reval_year AND
tab1.trans_seq = CACHED86.trans_seq AND
tab1.sequence_no = CACHED86.sequence_no AND
tab1.asset_id = CACHED87.asset_id AND
tab1.depr_book_id = CACHED87.depr_book_id AND
tab1.client = CACHED87.client AND
tab1.input_id = CACHED87.input_id AND
tab1.reval_year = CACHED87.reval_year AND
tab1.trans_seq = CACHED87.trans_seq AND
tab1.sequence_no = CACHED87.sequence_no AND
tab1.asset_id = CACHED88.asset_id AND
tab1.depr_book_id = CACHED88.depr_book_id AND
tab1.client = CACHED88.client AND
tab1.input_id = CACHED88.input_id AND
tab1.reval_year = CACHED88.reval_year AND
tab1.trans_seq = CACHED88.trans_seq AND
tab1.sequence_no = CACHED88.sequence_no
-- option (QUERYTRACEON 9481)Reading "What's new in Sql Server 2014" (http://msdn.microsoft.com/en-us/library/bb510411.aspx#CE). I see that it says:
New Design for Cardinality Estimation
The cardinality estimation logic, called the cardinality estimator, is re-designed in SQL Server 2014 to improve the quality of query plans, and therefore to improve query performance. The new cardinality estimator incorporates assumptions and algorithms
that work well on modern OLTP and data warehousing workloads. It is based on in-depth cardinality estimation research on modern workloads, and our learnings over the past 15 years of improving the SQL Server cardinality estimator. Feedback from customers shows
that while most queries will benefit from the change or remain unchanged, a small number might show regressions compared to the previous cardinality estimator. For performance tuning and testing recommendations, seeCardinality
Estimation (SQL Server).
I states that a "small number of queries might show regressions". To mee the regression is a showstopper and seems to have to do with complexity. I found one query reported by Juha Salo (bug 893758) that possibly could have to do with the same thing.
It is a query with many joins. Simplifying the query by removing one of the joins, makes it work fine. The query documented in his report does not need any setup as it is a query on system tables as sys.indexes and sys.index_columns.
I quote:
There is a huge difference in performance for the following query between compatibility level 120 and the lower levels:
dbcc dropcleanbuffers
SELECT i.NAME
FROM sys.indexes i
INNER JOIN sys.index_columns k ON i.object_id = k.object_id
AND i.index_id = k.index_id
INNER JOIN sys.objects o ON i.object_id = o.object_id
AND k.object_id = o.object_id
INNER JOIN sys.index_columns k1 ON i.object_id = k1.object_id
AND i.index_id = k1.index_id
AND k1.key_ordinal = 1
INNER JOIN sys.index_columns k2 ON i.object_id = k2.object_id
AND i.index_id = k2.index_id
AND k2.key_ordinal = 2
INNER JOIN sys.index_columns k3 ON i.object_id = k3.object_id
AND i.index_id = k3.index_id
AND k3.key_ordinal = 3
INNER JOIN sys.index_columns k4 ON i.object_id = k4.object_id
AND i.index_id = k4.index_id
AND k4.key_ordinal = 4
INNER JOIN sys.index_columns k5 ON i.object_id = k5.object_id
AND i.index_id = k5.index_id
AND k5.key_ordinal = 5
INNER JOIN sys.index_columns k6 ON i.object_id = k6.object_id
AND i.index_id = k6.index_id
AND k6.key_ordinal = 6
INNER JOIN sys.index_columns k7 ON i.object_id = k7.object_id
AND i.index_id = k7.index_id
AND k7.key_ordinal = 7
INNER JOIN sys.columns c1 ON o.object_id = c1.object_id
AND k1.column_id = c1.column_id
INNER JOIN sys.columns c2 ON o.object_id = c2.object_id
AND k2.column_id = c2.column_id
INNER JOIN sys.columns c3 ON o.object_id = c3.object_id
AND k3.column_id = c3.column_id
INNER JOIN sys.columns c4 ON o.object_id = c4.object_id
AND k4.column_id = c4.column_id
INNER JOIN sys.columns c5 ON o.object_id = c5.object_id
AND k5.column_id = c5.column_id
INNER JOIN sys.columns c6 ON o.object_id = c6.object_id
AND k6.column_id = c6.column_id
INNER JOIN sys.columns c7 ON o.object_id = c7.object_id
AND k7.column_id = c7.column_id
Can be run in any database. In our case we have a legacy database with almost 10 000 (ten thousand) tables. In that kind of database the query just freezes fully utilizing a single cpu core.
If compatibility level is switched to 110 then query performs as it should. -
Hi,
Following query is taking about 30-40 mins to fetch the data in a procedure.I tried using the hints and ran the explain plan but the cost is still the same (151,894) . Can anyone please help me in tuning the query.
SELECT SYSDATE c_creation_date, glcc.code_combination_id c_ccid,
glcc.segment1 c_funding, glcc.segment2 c_resp_ctr,
glcc.segment3 c_account, glcc.segment4 c_pgm_phase,
glcc.segment5 c_project_cd, null c_vendor_id,
null c_vendor_num, null c_vendor_name,
null c_site_code,
null c_vendor_type,
null c_project_id, null c_project,
null c_project_name,
null c_organization_id,
null c_organization, null c_expenditure_type_id,
null c_expenditure_type,
null c_task_id, null c_task,
null c_task_name, null c_award_id,
null c_award, null c_award_name,
jel.je_header_id c_document_batch_id,
jeh.name c_document_batch_name,
-- jel.reference_2 c_document_id, --- Note: reference_2 invoice_id,po_header_id,req_header_id
case
when je_source = 'Purchasing'
then jel.reference_2
when je_source = 'Payables'
then jel.reference_2
else null
end c_document_id,
case
when je_source = 'Purchasing'
then 'GLJE-'||je_source||' '||jel.reference_1
else 'GLJE-'||je_source
end c_document_type,
case
when je_source = 'Payables'
then jel.reference_5
when je_source = 'Purchasing'
then reference_4
else
reference_4
end c_document_number,
NULL c_document_release_id, NULL c_document_release,
NULL c_document_line_id,
null c_document_line_num,
case
when je_source = 'Purchasing'
then jel.reference_3
else null
end c_document_dist_id,
case
when je_source = 'Payables'
then jel.reference_3
else null
end c_document_dist_num,
0 c_distr_amount,
(nvl(accounted_dr,0) - nvl(accounted_cr,0)) c_encumbered_amount,
0,0,0,0,0,0,NULL,jel.je_line_num c_je_line_num
FROM gl_je_lines jel,
gl_je_headers jeh,
gl_encumbrance_types jee ,
gl_code_combinations glcc
WHERE jel.je_header_id = jeh.je_header_id
AND jel.CODE_COMBINATION_ID = glcc.CODE_COMBINATION_ID
AND jee.encumbrance_type_id = jeh.encumbrance_type_id
AND actual_flag = 'E'
and glcc.segment1
|| '-'
|| glcc.segment2
|| '-'
|| glcc.segment3
|| '-'
|| glcc.segment4
|| '-'
|| glcc.segment5
|| '-'
|| glcc.segment6
|| '-'
|| glcc.segment7 between nvl(:p_min_flex, :l_min_flex) and nvl(:p_max_flex,: l_max_flex )
and encumbrance_type = nvl(:l_enc_type,encumbrance_type)
and jel.EFFECTIVE_DATE between nvl(:p_encumbrance_date_from,:l_date_low)
and nvl(:p_encumbrance_date_to,:l_date_high)
and decode(je_source,'Purchasing',jel.reference_4,'Payables',jel.reference_5)
=nvl(:l_doc_number,decode(je_source,'Purchasing',jel.reference_4,'Payables',jel.reference_5))
and je_source != 'Payables';
I will appreciate the help!
Regards,
DarshiniHi,
Thanks Sundar and Miguel for the article, it is very helpful.
I was able to get the output from explain plan as well as sql_trace.But I could not understand how to compare the files and optimize the query. follwing are the outputs
select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
| Id | Operation | Name | Rows | Bytes | Cost |
| 0 | SELECT STATEMENT | | 2 | 336 | 151K|
| 1 | CONCATENATION | | | | |
| 2 | FILTER | | | | |
| 3 | NESTED LOOPS | | 1 | 168 | 54873 |
| 4 | NESTED LOOPS | | 1 | 155 | 54872 |
| 5 | NESTED LOOPS | | 1633 | 180K| 53237 |
| 6 | TABLE ACCESS FULL | GL_CODE_COMBINATIONS | 1387 | 77672 | 3713 |
| 7 | TABLE ACCESS BY INDEX ROWID| GL_JE_LINES | 1 | 57 | 66 |
| 8 | INDEX RANGE SCAN | GL_JE_LINES_N1 | 135 | | 3 |
| 9 | TABLE ACCESS BY INDEX ROWID | GL_JE_HEADERS | 1 | 42 | 1 |
| 10 | INDEX UNIQUE SCAN | GL_JE_HEADERS_U1 | 1 | | 0 |
| 11 | TABLE ACCESS BY INDEX ROWID | GL_ENCUMBRANCE_TYPES | 1 | 13 | 1 |
| 12 | INDEX UNIQUE SCAN | GL_ENCUMBRANCE_TYPES_U1 | 1 | | 0 |
| 13 | FILTER | | | | |
| 14 | NESTED LOOPS | | 1 | 168 | 97021 |
| 15 | NESTED LOOPS | | 1633 | 200K| 95386 |
| 16 | NESTED LOOPS | | 1387 | 95703 | 3714 |
PLAN_TABLE_OUTPUT
| 17 | TABLE ACCESS BY INDEX ROWID| GL_ENCUMBRANCE_TYPES | 1 | 13 | 1 |
| 18 | INDEX UNIQUE SCAN | GL_ENCUMBRANCE_TYPES_U2 | 1 | | 0 |
| 19 | TABLE ACCESS FULL | GL_CODE_COMBINATIONS | 1387 | 77672 | 3713 |
| 20 | TABLE ACCESS BY INDEX ROWID | GL_JE_LINES | 1 | 57 | 66 |
| 21 | INDEX RANGE SCAN | GL_JE_LINES_N1 | 135 | | 3 |
| 22 | TABLE ACCESS BY INDEX ROWID | GL_JE_HEADERS | 1 | 42 | 1 |
| 23 | INDEX UNIQUE SCAN | GL_JE_HEADERS_U1 | 1 | | 0 |
sql_trace
PARSING IN CURSOR #2 len=3812 dep=0 uid=173 oct=3 lid=173 tim=3338840240188 hv=2038351921 ad='aaf94e98'
SELECT SYSDATE c_creation_date, glcc.code_combination_id c_ccid ,
glcc.segment1 c_funding, glcc.segment2 c_resp_ctr,
glcc.segment3 c_account, glcc.segment4 c_pgm_phase,
glcc.segment5 c_project_cd, null c_vendor_id,
null c_vendor_num, null c_vendor_name,
null c_site_code,
null c_vendor_type,
null c_project_id, null c_project,
null c_project_name,
null c_organization_id,
null c_organization, null c_expenditure_type_id,
null c_expenditure_type,
null c_task_id, null c_task,
null c_task_name, null c_award_id,
null c_award, null c_award_name,
jel.je_header_id c_document_batch_id,
jeh.name c_document_batch_name,
case
when je_source = 'Purchasing'
then jel.reference_2
when je_source = 'Payables'
then jel.reference_2
else null
end c_document_id,
case
when je_source = 'Purchasing'
then 'GLJE-'||je_source||' '||jel.reference_1
else 'GLJE-'||je_source
end c_document_type,
case
when je_source = 'Payables'
then jel.reference_5
when je_source = 'Purchasing'
then reference_4
else
reference_4
end c_document_number,
NULL c_document_release_id, NULL c_document_release,
NULL c_document_line_id,
null c_document_line_num,
case
when je_source = 'Purchasing'
then jel.reference_3
else null
end c_document_dist_id,
case
when je_source = 'Payables'
then jel.reference_3
else null
end c_document_dist_num,
0 c_distr_amount,
(nvl(accounted_dr,0) - nvl(accounted_cr,0)) c_encumbered_amount,
0,0,0,0,0,0,NULL,jel.je_line_num c_je_line_num
FROM gl_je_lines jel,
gl_je_headers jeh,
gl_encumbrance_types jee ,
gl_code_combinations glcc
WHERE jel.je_header_id = jeh.je_header_id
AND jel.CODE_COMBINATION_ID = glcc.CODE_COMBINATION_ID
AND jee.encumbrance_type_id = jeh.encumbrance_type_id
AND actual_flag = 'E'
and glcc.segment1
|| '-'
|| glcc.segment2
|| '-'
|| glcc.segment3
|| '-'
|| glcc.segment4
|| '-'
|| glcc.segment5
|| '-'
|| glcc.segment6
|| '-'
|| glcc.segment7 between nvl(null,'F017-M029300-1980200200-CF2004-000000-00000-00000')
and nvl(null,'F017-M029300-1980200200-CF2004-000000-00000-00000' )
and encumbrance_type = nvl('Obligation',encumbrance_type)
and jel.EFFECTIVE_DATE between nvl(null,'01-JAN-1900')
and nvl(null,'31-DEC-4712')
and decode(je_source,'Purchasing',jel.reference_4,'Payables',jel.reference_5)
=nvl('5013794',decode(je_source,'Purchasing',jel.reference_4,'Payables',jel.reference_5))
and je_source != 'Payables'
END OF STMT
PARSE #2:c=50000,e=42317,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=3338840240172
EXEC #2:c=0,e=621,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=3338840243240
FETCH #2:c=5910000,e=5837875,p=13246,cr=19198,cu=0,mis=0,r=1,dep=0,og=1,tim=3338846081769
FETCH #2:c=0,e=1166,p=0,cr=8,cu=0,mis=0,r=15,dep=0,og=1,tim=3338846086521
*** 2008-08-06 12:24:18.016
FETCH #2:c=10000,e=2155,p=0,cr=21,cu=0,mis=0,r=15,dep=0,og=1,tim=3338854116887
FETCH #2:c=0,e=1812,p=0,cr=14,cu=0,mis=0,r=15,dep=0,og=1,tim=3338860800729
*** 2008-08-06 12:24:31.298
FETCH #2:c=10000,e=1729,p=0,cr=10,cu=0,mis=0,r=15,dep=0,og=1,tim=3338867087393
FETCH #2:c=0,e=1810,p=0,cr=14,cu=0,mis=0,r=15,dep=0,og=1,tim=3338872996057
*** 2008-08-06 12:24:43.317
FETCH #2:c=0,e=1728,p=0,cr=9,cu=0,mis=0,r=15,dep=0,og=1,tim=3338878825390
FETCH #2:c=0,e=2058,p=0,cr=12,cu=0,mis=0,r=15,dep=0,og=1,tim=3338884698870
*** 2008-08-06 12:24:57.286
FETCH #2:c=0,e=2095,p=0,cr=10,cu=0,mis=0,r=10,dep=0,og=1,tim=3338892467618
STAT #2 id=1 cnt=116 pid=0 pos=1 obj=0 op='HASH JOIN (cr=19296 pr=13246 pw=0 time=5837597 us)'
STAT #2 id=2 cnt=5464 pid=1 pos=1 obj=33979 op='TABLE ACCESS FULL GL_JE_HEADERS (cr=6120 pr=183 pw=0 time=796948 us)'
STAT #2 id=3 cnt=174 pid=1 pos=2 obj=34028 op='TABLE ACCESS BY INDEX ROWID GL_JE_LINES (cr=13176 pr=13063 pw=0 time=5576761 us)'
STAT #2 id=4 cnt=176 pid=3 pos=1 obj=0 op='NESTED LOOPS (cr=13088 pr=13063 pw=0 time=487814114 us)'
STAT #2 id=5 cnt=1 pid=4 pos=1 obj=0 op='MERGE JOIN CARTESIAN (cr=13076 pr=13063 pw=0 time=5575083 us)'
STAT #2 id=6 cnt=1 pid=5 pos=1 obj=34354 op='TABLE ACCESS FULL GL_ENCUMBRANCE_TYPES (cr=6 pr=0 pw=0 time=453 us)'
STAT #2 id=7 cnt=1 pid=5 pos=2 obj=0 op='BUFFER SORT (cr=13070 pr=13063 pw=0 time=5574591 us)'
STAT #2 id=8 cnt=1 pid=7 pos=1 obj=33834 op='TABLE ACCESS FULL GL_CODE_COMBINATIONS (cr=13070 pr=13063 pw=0 time=5573921 us)'
STAT #2 id=9 cnt=174 pid=4 pos=2 obj=34055 op='INDEX RANGE SCAN GL_JE_LINES_N1 (cr=12 pr=0 pw=0 time=349 us)'
=====================
I will greatly appreciate if any one can help me further.
Thanks,
Darshini -
How to optimize an aggregate query
There is a table table1 having more than 3 lacs of records. It has an index on a column say col1. when We issue a simple query select count(col1) from table1, it is taking about 1 minute in exectuion even if index is there. can anyone guide me on how to optimize it
More information about the problem.
SQL> select count(r_object_id) from dmi_queue_item_s;
COUNT(R_OBJECT_ID)
292784
SQL> show parameter optimizer
NAME TYPE VALUE
optimizer_dynamic_sampling integer 1
optimizer_features_enable string 9.2.0
optimizer_index_caching integer 0
optimizer_index_cost_adj integer 100
optimizer_max_permutations integer 2000
optimizer_mode string CHOOSE
SQL> show parameter db_file_multi
NAME TYPE VALUE
db_file_multiblock_read_count integer 16
SQL> show parameter db_block_size
NAME TYPE VALUE
db_block_size integer 8192
SQL> show parameter cursor_sharing
NAME TYPE VALUE
cursor_sharing string EXACT
SQL> column sname format a20
SQL> column pname format a20
SQL> column pval2 format a20
SQL> select sname,pname,pval1,pval2
2 from sys.aux_stats$;
no rows selected
SQL> explain plan for
2 select count(r_object_id) from dmi_queue_item_s;
select count(r_object_id) from dmi_queue_item_s
ERROR at line 2:
ORA-02402: PLAN_TABLE not found -
How to optimize the below select query
SELECT mvke~matnr "Material Number
mbew~bwkey "Plant
mvke~mvgr1 "Line of Business
mara~meins "Unit of measure
mara~ntgew "Net weight
mara~mhdrz "Remaining shelf life
mara~zzmax_exp_days "Max expiry days
makt~maktx "Material Description
tvm1t~bezei "Line of Business description
mbew~stprs "Standard price
mbew~vprsv "Price control (S/V)
mbew~verpr "Variable Price
FROM mvke INNER JOIN mara
ON maramatnr EQ mvkematnr
INNER JOIN makt
ON maktmatnr EQ mvkematnr
INNER JOIN tvm1t
ON tvm1tmvgr1 EQ mvkemvgr1
INNER JOIN mbew
ON mbewmatnr EQ maramatnr
AND
mbewbwkey EQ mvkevkorg
INTO TABLE gt_matdata
WHERE mbew~matnr IN s_matnr AND
mbew~bwkey IN s_werks AND
mvke~mvgr1 IN s_mvgr1 AND
makt~spras EQ sy-langu AND
tvm1t~spras EQ sy-langu.
Please advice.
Thanks and Regards
Syed SamdaniHi,
You are taking different fields of data from five different tables it seems.
Well you can take separate internal tables and fire five separate select queries using the 'For All Entries' condition after the first select stmnt, so that u get all the related data. Then take your final internal table and merge all data from all these five internal tables into you final table.
Regards,
Jayadeep -
How I can optimize this SQL query
I require your help, I want to know how I can optimize this query
SELECT
"F42119". "SDLITM" as "Code1"
"F42119". "SDAITM" as "Code2"
"F42119". "SDDSC1" as "Product"
"F42119". "SDMCU" as "Bodega"
Sum ("F42119". "SDSOQS" / 10000) as "Number",
Sum ("F42119". "SDUPRC" / 10000) as "preciou"
Sum ("F42119". "SDAEXP" / 100) as "Value",
Sum ("F42119". "SDUNCS" / 10000) as "CostoU"
Sum ("F42119". "SDECST" / 100) as "Cost"
"F4101". "IMSRP1" as "Division"
"F4101". "IMSRP2" as "classification",
"F4101". "IMSRP8" as "Brand"
"F4101". "IMSRP9" as "Aroma"
"F4101". "IMSRP0" as "Presentation"
"F42119". "SDDOC" as "Type",
"F42119". "SDDCT" as "Document",
"F42119". "SDUOM" as "Unit"
"F42119". "SDCRCD" as "currency"
"F0101". "ABAN8" as "ABAN8"
"F0101". "ABALPH" as "Customer"
"F0006". "MCRP22" as "Establishment"
from "PRODDTA". "F0101" "F0101"
"PRODDTA". "F42119" "F42119"
"PRODDTA". "F4101" "F4101"
"PRODDTA". "F0006" "F0006"
where "F42119". "SDAN8" = "F0101". "ABAN8"
and "F0006". "MCMCU" = "F42119". "SDMCU"
and "F4101". "IMITM" = "F42119". "SDITM"
and "F42119". "SDDCT" in ('RI', 'RM', 'RN')
and CAST (EXTRACT (MONTH FROM TO_DATE (substr ((to_date ('01-01-'| | to_char (round (1900 + (CAST ("F42119". "SDDGL" as int) / 1000))),' DD- MM- YYYY ') + substr (to_char (CAST ("F42119". "SDDGL" as int)), 4,3) -1), 1,10))) AS INT) in : Month
and CAST (EXTRACT (YEAR FROM TO_DATE (substr ((to_date ('01-01-'| | to_char (round (1900 + (CAST ("F42119". "SDDGL" as int) / 1000))),' DD- MM- YYYY ')+ Substr (to_char (CAST ("F42119". "SDDGL" as int)), 4,3) -1), 1,10))) AS INT) in: Year
and trim ("F0006". "MCRP22") =: Establishment
and trim ("F4101". "IMSRP1") =: Division
Group By "F42119". "SDLITM"
"F42119". "SDAITM"
"F42119". "SDDSC1"
"F4101". "IMSRP1"
"F42119". "SDDOC"
"F42119". "SDDCT"
"F42119". "SDUOM"
"F42119". "SDCRCD"
"F0101". "ABAN8"
"F0101". "ABALPH"
"F4101". "IMSRP2"
"F4101". "IMSRP8"
"F4101". "IMSRP9"
"F4101". "IMSRP0"
"F42119". "SDMCU"
"F0006". "MCRP22"
I appreciate the help you can give meIt seems to me that part of fixing it could be how you join the tables.
Instead of the humongous where clause, put the applicable conditions on the join.
You have
from "PRODDTA". "F0101" "F0101"
"PRODDTA". "F42119" "F42119"
"PRODDTA". "F4101" "F4101"
"PRODDTA". "F0006" "F0006"
where "F42119". "SDAN8" = "F0101". "ABAN8"
and "F0006". "MCMCU" = "F42119". "SDMCU"
and "F4101". "IMITM" = "F42119". "SDITM"
and "F42119". "SDDCT" in ('RI', 'RM', 'RN')
and CAST (EXTRACT (MONTH FROM TO_DATE (substr ((to_date ('01-01-'| | to_char (round (1900 + (CAST ("F42119". "SDDGL" as int) / 1000))),' DD- MM- YYYY ') + substr (to_char (CAST ("F42119". "SDDGL" as int)), 4,3) -1), 1,10))) AS INT) in : Month
and CAST (EXTRACT (YEAR FROM TO_DATE (substr ((to_date ('01-01-'| | to_char (round (1900 + (CAST ("F42119". "SDDGL" as int) / 1000))),' DD- MM- YYYY ')+ Substr (to_char (CAST ("F42119". "SDDGL" as int)), 4,3) -1), 1,10))) AS INT) in: Year
and trim ("F0006". "MCRP22") =: Establishment
and trim ("F4101". "IMSRP1") =: Division
INSTEAD try something like
from JOIN "PRODDTA". "F0101" "F0101" ON "F42119". "SDAN8" = "F0101". "ABAN8"
JOIN "PRODDTA". "F42119" "F42119" ON "F0006". "MCMCU" = "F42119". "SDMCU"
JOIN "PRODDTA". "F4101" "F4101" ON join condition
JOIN "PRODDTA". "F0006" "F0006" ON join condition.
Not sure exactly how you need things joined, but above is the basic idea. Remove criteria for joining the tables from the WHERE clause and put them
in the join statements. That might clean things up and make it more efficient. -
I wanted to optimize an update query.
Hi,
I have an update statement which i am executing using batchUPdate command.
this is my update statement -
UPDATE SELMDBO.cm_selm_gblnet_dse_data1
SET facility_id = ?,
client_oid =?
WHERE parent_ucn = ?
AND run_no = ?
i am using the java to update this query in batch.
but it is taking very large time to update 20000 records ( almost 2461419 ms)
i have put seperate indexes on facility_id , client_oid , parent_ucn and run_no
but it is not working i guess.
Is there any way i can optimize this update...
Thanks,
SumitHi Helio,
Thanks for your quick response.
there are 98000 row in this table..
i am updating 20000 records with 5000 records at a time. so 4 time i am executing update statement . one update causing me half n hour which is too much for me..
this is the explain plan currently.
Plan
UPDATE STATEMENT ALL_ROWSCost: 121
3 UPDATE SELMDBO.CM_SELM_GBLNET_DSE_DATA1
2 TABLE ACCESS BY INDEX ROWID TABLE SELMDBO.CM_SELM_GBLNET_DSE_DATA1 Cost: 121 Bytes: 2,091 Cardinality: 41
1 INDEX RANGE SCAN INDEX SELMDBO.CM_SELM_GBLNET_DSE_DATA_IDX2 Cost: 111 Cardinality: 17,178
Please let me know if you need more information on this.. -
How to optimize the select query that is executed in a cursor for loop?
Hi Friends,
I have executed the code below and clocked the times for every line of the code using DBMS_PROFILER.
CREATE OR REPLACE PROCEDURE TEST
AS
p_file_id NUMBER := 151;
v_shipper_ind ah_item.shipper_ind%TYPE;
v_sales_reserve_ind ah_item.special_sales_reserve_ind%TYPE;
v_location_indicator ah_item.exe_location_ind%TYPE;
CURSOR activity_c
IS
SELECT *
FROM ah_activity_internal
WHERE status_id = 30
AND file_id = p_file_id;
BEGIN
DBMS_PROFILER.start_profiler ('TEST');
FOR rec IN activity_c
LOOP
SELECT DISTINCT shipper_ind, special_sales_reserve_ind, exe_location_ind
INTO v_shipper_ind, v_sales_reserve_ind, v_location_indicator
FROM ah_item --464000 rows in this table
WHERE item_id_edw IN (
SELECT item_id_edw
FROM ah_item_xref --700000 rows in this table
WHERE item_code_cust = rec.item_code_cust
AND facility_num IN (
SELECT facility_code
FROM ah_chain_div_facility --17 rows in this table
WHERE chain_id = ah_internal_data_pkg.get_chain_id (p_file_id)
AND div_id = (SELECT div_id
FROM ah_div --8 rows in this table
WHERE division = rec.division)));
END LOOP;
DBMS_PROFILER.stop_profiler;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN TOO_MANY_ROWS
THEN
NULL;
END TEST;The SELECT query inside the cursor FOR LOOP took 773 seconds.
I have tried using BULK COLLECT instead of cursor for loop but it did not help.
When I took out the select query separately and executed with a sample value then it gave the results in a flash of second.
All the tables have primary key indexes.
Any ideas what can be done to make this code perform better?
Thanks,
Raj.As suggested I'd try merging the queries into a single SQL. You could also rewrite your IN clauses as JOINs and see if that helps, e.g.
SELECT DISTINCT ai.shipper_ind, ai.special_sales_reserve_ind, ai.exe_location_ind
INTO v_shipper_ind, v_sales_reserve_ind, v_location_indicator
FROM ah_item ai, ah_item_xref aix, ah_chain_div_facility acdf, ah_div ad
WHERE ai.item_id_edw = aix.item_id_edw
AND aix.item_code_cust = rec.item_code_cust
AND aix.facility_num = acdf.facility_code
AND acdf.chain_id = ah_internal_data_pkg.get_chain_id (p_file_id)
AND acdf.div_id = ad.div_id
AND ad.division = rec.division;ALSO: You are calling ah_internal_data_pkg.get_chain_id (p_file_id) every time. Why not do it outside the loop and just use a variable in the inner query? That will prevent context switching and improve speed.
Edited by: Dave Hemming on Dec 3, 2008 9:34 AM -
My developers have come up with a query that is hogging CPU and leading to unacceptable execution times. My initial analysis is that the problem is caused by the fact that the query is heavily parsing XML data with multiple calls to getClobVal() and extract(). I'm looking for suggestions on how to improve the performance of this query-- radical suggestions if necessary.
My first thought is to denormalize the data: pull out the XML fields that are being parsed frequently and put them into their own table columns. This would take quite a while (it's a large table), and there is no guarantee that tomorrow they won't come up with another field that needs to be parsed out. Can anyone offer other ideas, based on the details provided here?
It's an 11g database that consists of little more than a 20-million row table of XML CLOBs with an Oracle Text index (about 2 TB in size). The following is the problematic query. Its purpose is to parse certain fields out of the XML, transform some of them, and then dump those fields to a spreadsheet. It gets called on an ad-hoc basis by a web-based reporting app.
SELECT /*+ FIRST_ROWS( 500 ) */ a.* FROM (
SELECT /*+ FIRST_ROWS( 500 ) */ SCORE(0) as SCORE ,
extract( mytable.xmldata , '/document/biblio/doc_num/text()').getClobVal() AS Document,
extract( mytable.xmldata , '/document/biblio/kind_code/text()').getClobVal() AS Kind_Code,
extract( mytable.xmldata , '/document/biblio/filing_date/text()').getClobVal() AS Filed,
extract( mytable.xmldata , '/document/biblio/pub_date/text()').getClobVal() AS Published,
REPLACE(REPLACE(extract( mytable.xmldata , '/document/biblio/classification/classes[@type="abc"]/class/text()').getClobVal() , '<![CDATA[', ''), ']]>', '') AS ABC,
REPLACE(REPLACE(extract( mytable.xmldata , '/document/biblio/classification/classes[@type="abcd"]/class/text()').getClobVal() , '<![CDATA[', ''), ']]>', '') AS ABC_D,
REPLACE(REPLACE(extract( mytable.xmldata , '/document/biblio/title/text/text()').getClobVal() , '<![CDATA[', ''), ']]>', '') AS Title,
extract( mytable.xmldata , '/document/biblio/author/name/text()').getClobVal() AS Author,
extract( mytable.xmldata , '/document/biblio/assignees/assignee/name/text()').getClobVal() AS Assignee,
REPLACE(REPLACE(extract( mytable.xmldata , '/document/biblio/abstract/text/text()').getClobVal() , '<![CDATA[', ''), ']]>', '') AS Abstract
FROM mytable WHERE contains(xmldata, :yesclause , 0)>0 ORDER BY SCORE(0) DESC
) a WHERE ROWNUM<=500 Thanks for any thoughts on this.when parse xml try to manipulate character set
like
select <data>
from (XMLTABLE('*'
PASSING (XMLTYPE(bfilename('XMLSTORE','data.xml'),NLS_CHARSET_ID('AL32UTF8')))
COLUMNS <data> xmltype PATH '/*'
) -
Optimize Business Objects Query
I have a simple query, which takes approximately 1 minute to return.
Select SI_NAME, SI_METRICS From CI_SYSTEMOBJECTS Where SI_DESCRIPTION = 'Web Intelligence Processing Server'
All I am actually after is a specific metric (numConnections). Is there a way I can specify this field to reduce the number of records returned (as opposed to returning all metrics)?
E.g. Select SI_NAME, SI_METRICS.numConnections From CI_SYSTEMOBJECTS Where SI_DESCRIPTION = 'Web Intelligence Processing Server'
Note: The above example does not work, but I presume the answer will be something along those lines?Thanks Adam, though I'm still a bit confused, because the below statement (which selects a specific field) appears to work?
select SI_PROCESSINFO.SI_FILES from CI_INFOOBJECTS where si_instance = 0 -
Optimization of Update Query???
Hello guys!
I just finished writing an update query, which works but takes forever (approximately 20-30 seconds). Do you have any ideas how it can be optimized in order to run faster? Would it be reccomendable to create a new view that includes only the required columns for the Inner-Select Statement? Right now there are about 20 columns in VT_TBL_PUNKTDATEN_JOIN. Could the statement be written differently to speed up the execution???
Here is the statement:
begin
UPDATE TBL_PUNKTDATEN v SET v.INT_ZAEHLFAKTOR_BESTAND = :P700_INT_ZAEHLFAKTOR_BESTAND
WHERE EXISTS (SELECT p.INV_PT_ID_SUB FROM VT_PUNKTDATEN_JOIN p WHERE
(p.STR_GEBIET_MAIN = :P700_STR_GEBIET) and (p.STR_LRT_MAIN = :P700_STR_LRT) and (v.INV_PT_ID_SUB = p.INV_PT_ID_SUB));
end;I'm really curious if you have any solution for this!
I Appreciate your effort!
Bye,
Sebastianskahlert wrote:
@ Sven W.
I receive an ORA-01779 error (cannot modify a column which maps to a non key-preserved table).I thought that this would happen (based on your table names), but it was worth a try.
The problem is which table is the parent and which one is the child table. When joining two tables via a foreign key relationship the child table will be the so-called key-preserved table. This means one row from the source table can be matched to exactly one row in the joined output (=view).
In your case you can't use the update construct I suggested. It would work if you want to update the other table p.
However you could measure how long the join select is running and compare that to the update part. This can give a first indication if the select is slow or the update.
A further try can be to change the correlated subquery into an uncorrelated subquery. I doubt that this will help since the oracle optimzier can do this transformation by itself. Other than that you need to give us more information about table sizes and execution plans. You can always trace the update and see where the time is spent.
uncorrelated
UPDATE TBL_PUNKTDATEN v
SET v.INT_ZAEHLFAKTOR_BESTAND = :P700_INT_ZAEHLFAKTOR_BESTAND
WHERE v.INV_PT_ID_SUB IN (SELECT p.INV_PT_ID_SUB FROM VT_PUNKTDATEN_JOIN p
WHERE p.STR_GEBIET_MAIN = :P700_STR_GEBIET
and p.STR_LRT_MAIN = :P700_STR_LRT);Edited by: Sven W. on Aug 19, 2009 1:17 PM -
Optimization of sql query..
i need an alternate to this query
I made an vacation calendar application with a home page showing an SQL calendar with the date field being Vacation_start_date + level-1 and the column link with First_name using this query:
select unique vacation_start_date + level-1, First_name
from leaves
where to_char(vacation_start_date + level-1,'d') not in ('1','7')
connect by level-1 <= (vacation_end_date- vacation_start_date)
leaves table:
table_id
first_name
vacation_start_date
end-date
etc etcOK, I'm assuming you mean that an individual user may have leave several records associated to him - and again, we need to ensure the CONNECT BY "limiter" only loops through the iterations for that particular record - in which case you could re-write using the ROWID as below (I've included some sample data as I'm assuming what you mean here):
DROP TABLE LEAVES;
CREATE TABLE leaves as
select 'brown' as name,to_date('01/01/2008','dd/mm/yyyy') vacation_start_date ,to_date('20/01/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'smith' as name,to_date('01/01/2008','dd/mm/yyyy') vacation_start_date ,to_date('21/01/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'smith' as name,to_date('01/02/2008','dd/mm/yyyy') vacation_start_date ,to_date('21/02/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'smith' as name,to_date('01/03/2008','dd/mm/yyyy') vacation_start_date ,to_date('21/03/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'smith' as name,to_date('01/04/2008','dd/mm/yyyy') vacation_start_date ,to_date('21/04/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'smith' as name,to_date('01/05/2008','dd/mm/yyyy') vacation_start_date ,to_date('21/05/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'gordon' as name,to_date('01/01/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/01/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'gordon' as name,to_date('01/02/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/02/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'gordon' as name,to_date('01/03/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/03/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'gordon' as name,to_date('01/04/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/04/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'gordon' as name,to_date('01/05/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/05/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'green' as name,to_date('01/01/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/01/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'green' as name,to_date('01/02/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/02/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'green' as name,to_date('01/03/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/03/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'green' as name,to_date('01/04/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/04/2008','dd/mm/yyyy') vacation_end_date FROM DUAL UNION ALL
select 'green' as name,to_date('01/05/2008','dd/mm/yyyy') vacation_start_date ,to_date('22/05/2008','dd/mm/yyyy') vacation_end_date FROM DUAL;
select vacation_start_date + level-1, name
from leaves
where to_char(vacation_start_date + level-1,'d') not in ('1','7')
connect by prior rowid=rowid
and PRIOR DBMS_RANDOM.STRING ('p', 10) IS NOT NULL
and level-1 <= (vacation_end_date- vacation_start_date)That should be like greased lightning! :-)
Maybe you are looking for
-
I have a new ipod nano but at the moment I am unable to download music through itunes. I'm so disappointed. I have created an Apple ID, reviewed and inputted all of my data for my account and still get told to 'review account' because my ID has not '
-
After installing itunes on my Dell 570 PC every icon on my screen becomes an itunes icon
After installing iTunes on my Dell 570 PC every icon on the screen becomes an iTunes icon and which ever icon you select it becomes an iTunes page. Help
-
How to downgrade to XP on Satellite Pro L 300
I have read conflicting methods for downgrading to XP. This should have been put into the manual Apologies if this has already been covered elsewhere (I couldn't find it if it was) 1. Vista will automatically set up when you turn on the laptop 2. Use
-
Recovery partition not getting detected
Hi, i am using dv6-3000 series laptop.the problem is when i last formatteed my system, i moved my recovey partition inside another partition. Now i am trying to revocer my system as my OS got corrupted. But while recovering its not detecting the reco
-
Can't find mavericks installer
Trying to recover Mavericks installation, want to create a new boot-able USB to reinstall mavericks. In my 10.9.4 laptop, I can't find the Mavericks ap installer suggested by Creating a bootable OS X installer in OS X Mavericks. Where do I find the i