problem z czasem odpowiedzi EJB

0

Witam,
moje pytanie zwiazane jest z optymlizacja czasu zapytania w EJB.
Korzystam z servera Jboss 5.0.1GA oraz bazy testowej "Northwind" postawionej na MySQL 5.1.

Testuje 2 zapytania:
1)SELECT c FROM Customers c where c.companyName = 'xxx'
2)SELECT DISTINCT c.companyName FROM Customers c join c.orders o join o.orderDetails od WHERE od.quantity > 12

Zapytanie 1 zwraca 1 wiersz, 2 - 80.Obydwa są zdefiniowane jako named queries w klasie encji Customers.
Problem tkwi w tym, że średni czas wykonania 1 zapytania to ok 5 sek a drugiego w granicach 500 milisekund.Czsy obydwu zapytan powinny wynosic w zalozeniu ok 500 milisekund.
Implementacja procedury ktora wywołuje zapytania jest taka sama.
Fragment encji która zawiera zdefiniowane Named Queries :

 public class Customers implements Serializable {

   private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "CustomerID")
    private String customerID;
    @Basic(optional = false)
    @Column(name = "CompanyName")
    private String companyName;
    @Column(name = "ContactName")
    private String contactName;
    @Column(name = "ContactTitle")
    private String contactTitle;
    @Column(name = "Address")
    private String address;
    @Column(name = "City")
    private String city;
    @Column(name = "Region")
    private String region;
    @Column(name = "PostalCode")
    private String postalCode;
    @Column(name = "Country")
    private String country;
    @Column(name = "Phone")
    private String phone;
    @Column(name = "Fax")
    private String fax;

    //bi-directional many-to-many association to Customerdemographic
	@ManyToMany(fetch=FetchType.LAZY)
	@JoinTable(
		name="customercustomerdemo"
		, joinColumns={
			@JoinColumn(name="CustomerID", referencedColumnName="CustomerID", nullable=false)
			}
		, inverseJoinColumns={
			@JoinColumn(name="CustomerTypeID", referencedColumnName="CustomerTypeID", nullable=false)
			}
		)
	private java.util.Set<Customerdemographics> customerdemographics;

	//bi-directional many-to-one association to Order
	@OneToMany(mappedBy="customerss", fetch=FetchType.LAZY)
	private java.util.Set<Orders> orders;

    public java.util.Set<Customerdemographics> getCustomerdemographics() {
		return this.customerdemographics;
	}
	public void setCustomerdemographics(java.util.Set<Customerdemographics> customerdemographicss) {
		this.customerdemographics = customerdemographicss;
	}
	public java.util.Set<Orders> getOrders() {
		return this.orders;
	}
	public void setOrders(java.util.Set<Orders> orderss) {
		this.orders = orderss;
	}

Fragment fasady:

    public List<Customers> Query1() {
        Query q = em.createNamedQuery("Customers.Query1");
        return q.getResultList();
    }
    public List<Customers> Query2() {
        Query q = em.createNamedQuery("Customers.Query2");
        return q.getResultList();
    }

Wiec pobieram w obydwu przypadkach liste encji.
Korzystam przy tym z interfejsów zarówno Lokalnego(w kontenerze) jak i Remote(w standalone)
wydaje mi się że problem jest gdzieś w ustawieniach JBossa natomiast nie potrafie go zlokalizowac:(

Korzystam z local-tx-datasource w tym wypadku,nie wiem co jeszcze może byc istotne,może ktoś z was bedzie wiedział co może byc przyczyna??

0

a ile zajmuje te zapytania na bazie bez uzycia jpa itp

0
  1. wyświetl sobie zapytania SQL w logu i odpal na gołej <s>babie</s> bazie.
  2. Załóż indeks na kolumnie.
0

Na samej bazie wykonuja sie ok,
Problem tkwi gdzies w ustawieniach JBossa,w logach deploymentu nie ma zadnych błedów,wiec myslałem ze to kwestia przekazania do klienta kolekcji wyników,no ale jest to tylko jedna encja,nie mam innych pomyslow:(

1 użytkowników online, w tym zalogowanych: 0, gości: 1