Új hozzászólás Aktív témák
-
rum-cajsz
őstag
Csak azokat a mezőket érdemes indexelni, amire keresni akarsz.
Ha a kereséseid több mezőre egyidejűleg történnek, akkor érdemes több mezőre összetett indexet tenni, sőt ha valamilyen függvényt használsz, akkor függvény alapú indexet érdemes használni.
Minél több indexed van, annál lassabb lesz az insert és a delete, mert a sorok felvételével és törlésével egyidejűleg az indexsorok létrehozása is létrejön, törlődik.
Ha többféle lekérdezés is történik a táblán, akkor érdemes lehet több oszlopra is indexet tenni a lekérdezések függvényében.
Összetett index esetén csak akkor fog működni az index alapú keresés, ha az első oszlop legalább benne van a feltételek között.És azért van ilyen neved (SYSxxxxx), mert nem nevezted el az indexet létrehozáskor (pl. primary key definiálásakor), ilyenkor egy rendszer által generált néven jön létre az index.
-
rum-cajsz
őstag
Nem írtad az adatbázist! Oracle-ben pl. az ALL_IND_COLUMNS nézetből lekérdezheted:
select
INDEX_NAME,
LPAD(TABLE_NAME,17) TABLE_NAME,
LPAD(COLUMN_NAME,15) COLUMN_NAME,
LPAD(COLUMN_POSITION,5) COLUMN_POSITION
from ALL_IND_COLUMNS
WHERE TABLE_NAME = upper('&tablename')
order by INDEX_NAME,COLUMN_POSITION; -
rum-cajsz
őstag
Oracleben van lehetőség a Materializált Nézetekre, amivel valóban lehet gyorsítani a selectedet, de ezt körültekintően érdemes használni.
De a legfőbb kérdés, hogy mire akarod használni az adott selectet. A hálózati forgalom pl. minimalizálható, ha nézetet használsz, ám ha ezt a lekérdezést egy sql*plusban adod ki, akkor nem lesz különbség a két (select contra view) között.
-
bpx
őstag
ha bekapcsolod, aprólékosan minden egyes aktivitást, várakozást feljegyez egy trace fájlba, amit később ki lehet értékelni
pl. tkprof-fal lehet ember által emészthető formára hozni, ahol lehet látni pl. minden egyes sql utasításra, hogy milyen tervvel futott, és a terv egyes lépései mennyi ideig tartottak#1026: a view nem más, mint egy elmentett lekérdezés aminek neve van, semmivel se gyorsabb se mysqlben, se Oracle-ben, csak kényelmesebb
-
-
bpx
őstag
lehet, de ehhez nem kell újra feltalálni a kereket:
SQL> create table test1(name varchar2(10));
Table created.
SQL> insert into test1 values('Spongyabob');
1 row created.
SQL> insert into test1 values('Patrik');
1 row created.
SQL> insert into test1 values('Tunyacsáp');
1 row created.
SQL> commit;
Commit complete.
SQL> select listagg(name,',') within group (order by name) as nevek from test1;
NEVEK
------------------------------
Patrik,Spongyabob,TunyacsápEz mondjuk 11.2-es feature, ha ennél régebbi az Oracle, akkor google: oracle string aggregation
-
martonx
veterán
Oracle-ül nem tudok, de a megvalósítás elvi alapja bármilyen SQL-en (már amelyik ismeri a join-t):
1. csinálsz egy táblát, amibe belerakod 3 évre visszamenőleg az összes napot. Ha már csinálsz egy ilyen táblát, pár évre előre sem árt belerakni a napokat. Esetedben nem kell a munkanapokkal, hétvégékkel, munkaszüneti napokkal foglalkozni, én ettől függetlenül javasolnám, hogy ezeket is kezeld le benne. Ha már rászánod az időt, a későbbiekben még jól jöhet. A szökőévekre azért figyelj oda mindenképpen.
A táblát én úgy csinálnám, hogy beállítok egy kezdő évet, majd while ciklusokkal léptetve az évet, és a napokat, szépen teleinsertálnám a napokkal.
2. A létrejött naptár táblát joinolod a lekérdezendő táblához, mégpedig az alapján, hogy az adott nap közé esik-e az intervallumodnak. Ha több esik közé az is jó (Descarte-szorzat ugye). Az így kapott selectet countozod, groupolod a napokra és voilá.Az 1-es pont szép, elegáns megvalósítása eltarthat egy darabig (SQL guruságtól függően több perctől több óráig), de megéri a fáradtságot, mert utána mindenféle a 2-eshez hasonló okosságra fel tudod használni a naptár tábládat.
-
bpx
őstag
a dátumokat simán ki lehet vonni egymásból, amiből szám lesz
1 egész jelent 1 napotSQL> select to_date('2011-10-12 08:00:00', 'YYYY-MM-DD HH24:MI:SS') - to_date('2011-10-01 19:00:00', 'YYYY-MM-DD HH24:MI:SS') from dual;
TO_DATE('2011-10-1208:00:00','YYYY-MM-DDHH24:MI:SS')-TO_DATE('2011-10-0119:00:00
--------------------------------------------------------------------------------
10.5416667aztán ezt lehet még szépíteni ha szeretnéd, pl. trunc()
-
Lortech
addikt
A lekérdezés eredményének egyik mezője? Egyik, mint tetszőleges mezője vagy egyik, mint 1 adott mezője.
A lekérdezés eredményén (kurzor) végiggyalogolsz egy ciklussal, és a megfelelő mező(ke)t megvizsgálod instr függvénnyel.
Hatékonyabb lenne, ha eleve az sql tartalmazza a vizsgálatot a where-ben a like klózzal.
Nem tudom, hogy ezzel segítettem-e, mert 38 féleképpen lehet értelmezni a mondatodat, pontosítás kéne pont bemenet és elvárt végeredmény tekintetében. -
Frigo
őstag
Szerintem a DATE_FORMAT sql-függvény tökéletes erre.
Új hozzászólás Aktív témák
- HiFi műszaki szemmel - sztereó hangrendszerek
- Hardcore café
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Melyik tápegységet vegyem?
- Milyen okostelefont vegyek?
- Hozd azt a cementet, báttya! Készül a Keychron billentyűzet!
- AliExpress tapasztalatok
- Androidos tablet topic
- TCL LCD és LED TV-k
- Windows 11
- További aktív témák...
- LG 32MR50C-B. 31.5 hüvelykes ívelt 1500R, 1920x1080 Full HD, 100Hz, AMD FreeSync, VA, Dönthető
- Eladó Lenovo Legion Y530 magyar vil.bill.
- 512GB M.2 NVMe SSD-k nagy tételben eladók.
- HP EliteBook 755 G5 Ryzen 5 PRO /16GB RAM /500 GB SSD/15.6 FHD / magyar bill.garanciás laptop
- Új! WHITE 4K GAMER PC! AMD RYZEN 7 7800X3D / RX 9070XT 16GB / 32GB 6000Mhz / 1TB Nvme / 750W GOLD
- Samsung Galaxy A35 5G 6/128GB / 12 hó jótállás
- Telefon felvásárlás!! Apple Watch SE/Apple Watch SE 2 (2022)
- AKCIÓ! LENOVO ThinkPad P15 Gen2 munkaállomás - i7 11800H 16GB DDR4 512GB SSD Quadro T1200 4GB W
- Készpénzes / Utalásos Számítógép felvásárlás! Személyesen vagy Postával!
- Apple iPhone 13 Pro Max 256GB,Átlagos,Dobozaval,12 hónap garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

