PHP 5.2.6 (Windowson) + MSSQL 2005 szívás
Üdvözlet minden kedves Kispajtásnak!
A fenti témában lenne szükségem tanácsra. Röviden vázolom az eddigi helyzetet:
- PDO-val próbálkoztam, de a natív elérés Windowson a hivatalos doksi szerint nem stabil, helyette ODBC-t javasol, viszont az sem stabil.
- Átálltam ADOdb-re, de az adatbáziskapcsolat létrehozásához még így is frissítettem kellett az ntwdblib.dll-t.
- Így most nagyjából frankó a dolog, de ha kiadok egy majd' 800 karakter hosszú - adatbázisban stringként tárolt - SELECT-et, akkor az elvárt 15 sor helyett 480.000 sort ad vissza az mssql_query.
- A fenti miatt felmerült, hogy valami hosszkorlát miatt nem csonkolódhat-e a lekérdezés WHERE része?
Az alábbi megoldási javaslatok merültek föl eddig:
1. A SELECT-et közvetlenül az adatbázisban lefuttatni, nem a PHP segítségével.
2. Lecserélni az ADOdb-t a Microfos hivatalos PHP-s driverére.
(3. .NET alatt futtatni a PHP-t, ha lehet ilyet.)
Mit szóltok ezekhez? Van valakinek valami jobb ötlete?
Köszi előre is:
Dávid
■ A fenti témában lenne szükségem tanácsra. Röviden vázolom az eddigi helyzetet:
- PDO-val próbálkoztam, de a natív elérés Windowson a hivatalos doksi szerint nem stabil, helyette ODBC-t javasol, viszont az sem stabil.
- Átálltam ADOdb-re, de az adatbáziskapcsolat létrehozásához még így is frissítettem kellett az ntwdblib.dll-t.
- Így most nagyjából frankó a dolog, de ha kiadok egy majd' 800 karakter hosszú - adatbázisban stringként tárolt - SELECT-et, akkor az elvárt 15 sor helyett 480.000 sort ad vissza az mssql_query.
- A fenti miatt felmerült, hogy valami hosszkorlát miatt nem csonkolódhat-e a lekérdezés WHERE része?
Az alábbi megoldási javaslatok merültek föl eddig:
1. A SELECT-et közvetlenül az adatbázisban lefuttatni, nem a PHP segítségével.
2. Lecserélni az ADOdb-t a Microfos hivatalos PHP-s driverére.
(3. .NET alatt futtatni a PHP-t, ha lehet ilyet.)
Mit szóltok ezekhez? Van valakinek valami jobb ötlete?
Köszi előre is:
Dávid
mssql_query helyett sybase
nekem volt hasonló gondom régebben, de még 4-es PHP-ban, én akkor az mssql_-es függvények helyett a sybase_-s függvényeket használtam és ez megoldotta a gondokat (nem biztos, hogy ez nálad beválik).
Ha olyan nagy a SELECT, akkor szerintem próbálj meg tárolt eljárást készíteni belőle.
Az mssql_query ADOdb adottság
Köszi a választ! A baj az, hogy az mssql_query-t nem én használom, hanem az ADOdb. Ezért merült föl bennem, hogy ha nem lesz jobb megoldás, akkor azt kéne lecserélnem, de egyelőre azért még bízom. (A viszonylagos adatbázisfüggetlenség miatt nagyon nem szeretném a Microsoft-os drivert használni.)
A tárolt eljárás jó ötletnek tűnik, ha más egyszerű javaslat nem lesz, akkor még ez kecsegtet a leggyorsabb eredménnyel.
Üdv:
Dávid
adatbázisfüggetlenség
Valami más?
Megvan a megoldás
Csak a tudásbázis növelése miatt írom le, hogy megoldottam a problémát. Nem az esetleges "hosszkorlát" okozta a problémát, egyszerűen csak nem volt megfelelő a SELECT.
Egy komoly tanulsága van a dolognak: az SQL Server Management Studio valószínűleg optimalizálja a SELECT-et futtatás előtt, így más eredményt ad, mintha nem rajta keresztül futtatjuk le a lekérdezést.
Köszi mindenkinek, aki gondolkodott rajta!
Üdv:
Dávid
ismert
a SQL Server Management Studio -val én is szívtam mikor még delphis korszakban kellett programoznom, ezért inkább csak optimalizálási (Explain Editor) javaslatait használtam a rendszer gyorsítására.
Üdv
Sanyi