Jag håller på att göra ett adminsystem till ett större projekt. Det jag undrar är ifall det finns någon bra sätt att konstruera sökningar på t ex ordrar i en databas där det kommer att köras rätt tunga sql-sattser. För tillfället körs det ca 5 sql-satser på på hela order-tabellen (några med inner joins och/eller subquries).
Det är uppdelat i en sats som är själva sökningen för vilka rader som ska visas. En sats som räknar de raderna för att göra en paging. Sen finns det några kategorier som man kan välja mellan, så som "nya ordrar", "betalade ordrar", "skickade ordrar" osv där det också körs en count för att se hur många det finns i varje kategori.
Det som känns fel och borde kunna ta rätt mycket extra datorkraft är när man gör en sökning och den ska hitta hitta alla relevanta ordrar 5 gånger för att det ska kunna räkna vilka som hör till vilken kategori och hur många som finns i den rikigta sökningen osv.
Så det jag undrar över är skulle det finnas någon användning att skapa en temp table och sen söka igenom den? Känns som det också skulle kunna bli tungt ifall den skulle behöva kopiera över hela tabellen ifall man söker på ett tomt värde (sökningsfältet är egentligen en listning där man kan söka så tomt är standard).
Sen finns det något bra sätt att ta reda på hur många rader en sökning skulle ha returnerat ifall man inte hade haft med LIMIT i satsen. T ex:
"SELECT Name, CustomerID FROM `order` WHERE NAME LIKE '%pelle%' LIMIT 10" Utan att göra en 2:a sql-sats: "SELECT COUNT(*) FROM `order` WHERE NAME LIKE '%pelle%'"?
Jag är öppen för alla idéer och förslag.