Skip to main content

SQL Query Tuning

Follwoing points need to be taken care while developing the ADf application.With these points we can improve the application perforemance.

1. Understanding of the Data, Business, and Application : First and most importanat point is to understand the data model properly,in terms of table dependency.If we are clear about relationship between tables then it will be easy to write query and implement the logic by using various clauses,conditions,joins..

2. Simple is usually faster  :  instead of writing a very complex SQL qeries, if we break it into multiple simple SQL statements then the chances are quite high that the performance will improve. Make use of the EXPLAIN PLAN to see the query cost. 

3. Joining tables in the proper order : Use proper joins between the tables.An improper join can result into performance issues.

4. Using Bind Variables, Stored Procs, and Packages : use proper bind variables where possible in queries.It will fetch the required results only and take less time.

5. Using the indexes carefully : Using indexes can improve the performance but if we do nat use them properly thy may result to erformance degradation. 

6.Using WHERE clause instead of HAVING clause : usage of WHERE clause may take advantage of the index defined on the column(s) used in the WERE clause.

7. Using realistic test data : Use of realtime data always helps to identify and fix the isses.

8. Using EXPLAIN PLAN : It let you know the cost of your query line by line.So that you can identify or fix the issue at exact step or line. Press F10 in SqlDeveloper to get the cost of query.

9. Using the leading index columns in WHERE clause - the WHERE clause may use the complex index access path in case we specify the leading index columns of a complex index otherwise the WHERE clause won't use the indexed access path.

10. Using ORDER clause BY for an indexed scan.

11. Reducing network traffic - If we can club multiple SQL statements in a single PL/SQL block then the entire block can be sent to Oracle Server involving a single network communication, which will eventually improve performance by reducing the network traffic.
Arrays and PL/SQL blocks can be used effectively to reduce the network traffic.

12. Use of ROWID and ROWNUM : These special columns are used to ipmrove the performance. RowID search is the fastest for Oracle DB and this must be used wherever possible. RowNum is used where we want to strict the no of rows.

Comments

Popular posts from this blog

Passivation and Activation in ADF (Application Module )

1. For performance reasons, ADF keeps a pool of application modules in memory. It tries to give each session the same application module as the session used during the last request; however, this might not be possible during peak load of your application. 2. In this case, ADF saves the application modules state in a database table so the application module can be used by another session. This is called passivation . 3. When the first session needs the application module again, its state is retrieved from the database process known as activation . 4. If you have made an error in your code and depend on some variable that is not persisted correctly when your application module state is stored, you will experience mysterious errors under high load.   Enable/Disable Application Module Pooling : Right-click on your application module, choose Configurations.By default, each application module has two configurations. Ensure that the one ending in …Local is selected and then click

Get modified rows from Entitiy Cache

To get the modified rows from entity cache we have getEntityState() method at EntityImpl class. Refer to my previous blog  Accessing EO impl methods from VO impl  where i am overriding the getEntityState() in EOimpl and calling it in VOImpl. We can use methods written or overridden in VOImpl class to AMImpl class. There are different states associated with an entity object. STATUS_UNMODIFIED STATUS_MODIFIED STATUS_NEW STATUS_DELETED STATUS_DEAD We have to check the state or row in our AmImpl class by using the VOImpl method and through this we can distinguish the rows present at vo. Add below code in AMImpl class along with my previous post. public void geCachedRowsCount(){         JobsVOImpl jobsVo = (JobsVOImpl)this.getJobsVO();         RowSetIterator iter = jobsVo.createRowSetIterator(null);             while(iter.hasNext()){             Row row = iter.next();             byte state = jobsVo.getEntityState(row);             System.out.println("Job_id -&

The file store "WLS_DIAGNOSTICS" could not be opened

WLS_DIAGNOSTIC ERROR weblogic.store.PersistentStoreException: [Store:280073]The file store "WLS_DIAGNOSTICS" could not be opened because it contained a file with the invalid version 1. A file of version 2 was expected. When you get this error while running your application on internal weblogic server delete the following file WLS_DIAGNOSTICS000000.DAT search the file in following path C:\jdev_work\system11.1.1.5.37.60.13\DefaultDomain this file is in DefaultDomain folder of your jdev. and delete the WLS_DIAGNOSTICS000000.DAT file . and run your applicatuon