- Redmi Note 10 Pro - majdnem minden stimmel
- Android alkalmazások - szoftver kibeszélő topik
- Milyen okostelefont vegyek?
- Huawei Mate 20 Pro - a mindenit!
- iPhone topik
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Fotók, videók mobillal
- Samsung Galaxy A56 - megbízható középszerűség
- Apple iPhone Air - almacsutka
Új hozzászólás Aktív témák
-
biker
nagyúr
válasz
hellsing71 #2237 üzenetére
de ez ettől még két lekérdezés, csak egybeágyaztad
-
nevemfel
senior tag
válasz
hellsing71 #2233 üzenetére
Valóban kihagyhatom, hogy össz hány rekord van a táblában, a lapozás anélkül is működik.
Nem hiszem, hogy a teljes táblára a COUNT queryt érdemes kihagyni, szerintem ez a leggyorsabb lekérdezés.
-
biker
nagyúr
válasz
hellsing71 #2234 üzenetére
nem vonhatod össze, mert más alapján számol. szerintem. de valóban, századokat jelent csak
-
biker
nagyúr
válasz
hellsing71 #2229 üzenetére
ennél egyszerűbb
Nálam több százezer soros táblák lapozóval
<script>
$(document).ready(function(){
$('#naploTabla').DataTable({
'processing': true,
'serverSide': true,
'serverMethod': 'post',
'ajax': {
'url':'ajax_naplo_file.php'
},
'columns': [
{ data: 'datum' },
{ data: 'esemeny' },
{ data: 'ertek' },
]
});
});
</script>a feldolgozó pedig
<?php
include("master.php");
// Create connection
try{
$conn = new PDO("mysql:host=$host;dbname=$adatbazis","$sql_felhasznalo","$sql_jelszo",
array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;',
PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
));
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
die('Unable to connect with the database');
}
## Read value
$draw = $_POST['draw'];
$row = $_POST['start'];
$rowperpage = $_POST['length']; // Rows display per page
$columnIndex = $_POST['order'][0]['column']; // Column index
$columnName = $_POST['columns'][$columnIndex]['data']; // Column name
$columnSortOrder = $_POST['order'][0]['dir']; // asc or desc
$searchValue = $_POST['search']['value']; // Search value
$searchArray = array();
## Search
$searchQuery = " ";
if($searchValue != ''){
if (substr_count($searchValue, " ")==0)
{
$searchQuery = " AND (datum LIKE :datum or
esemeny LIKE :esemeny ) ";
$searchArray = array(
'datum'=>"%$searchValue%",
'esemeny'=>"%$searchValue%"
);
}
else
{
$searchValue_arr=explode(" ", $searchValue);
$i=1;
foreach($searchValue_arr AS $expl_value) {
$searchQuery.= " AND (datum LIKE :datum$i or
esemeny LIKE :esemeny$i ) ";
$searchArray = array(
"datum$i"=>"%$expl_value%",
"esemeny$i"=>"%$expl_value%"
);
}
}
}
## Total number of records without filtering
$stmt = $conn->prepare("SELECT COUNT(*) AS allcount FROM fitness_naplo{$_SESSION['helyszin']} ");
$stmt->execute();
$records = $stmt->fetch();
$totalRecords = $records['allcount'];
## Total number of records with filtering
$stmt = $conn->prepare("SELECT COUNT(*) AS allcount FROM fitness_naplo{$_SESSION['helyszin']} WHERE 1 ".$searchQuery);
$stmt->execute($searchArray);
$records = $stmt->fetch();
$totalRecordwithFilter = $records['allcount'];
## Fetch records
$stmt = $conn->prepare("SELECT * FROM fitness_naplo{$_SESSION['helyszin']} WHERE 1 ".$searchQuery." ORDER BY ".$columnName." ".$columnSortOrder." LIMIT :limit,:offset");
// Bind values
foreach($searchArray as $key=>$search){
$stmt->bindValue(':'.$key, $search,PDO::PARAM_STR);
}
$stmt->bindValue(':limit', (int)$row, PDO::PARAM_INT);
$stmt->bindValue(':offset', (int)$rowperpage, PDO::PARAM_INT);
$stmt->execute();
$empRecords = $stmt->fetchAll();
//echo "ok";
$data = array();
foreach($empRecords as $row){
// echo "ok";
$data[] = array(
"datum"=>$row['datum'],
"esemeny"=>translated($row['esemeny'], $_GET['sel_lang']),
"ertek"=>$row['ertek']
);
}
## Response
$response = array(
"draw" => intval($draw),
"iTotalRecords" => $totalRecords,
"iTotalDisplayRecords" => $totalRecordwithFilter,
"aaData" => $data
);
echo json_encode($response);
?>nyilván testre kell szabnod, de az elv ennyi, ajaxxal hívogatja, és küldi melyik 10 vagy 25 vagy 100 sort kérje le
-
martonx
veterán
válasz
hellsing71 #2229 üzenetére
Rosszul állsz hozzá. Mivel lapozást használsz, soha nem kell a teljes táblát listáznod. És biztosra veszem, hogy kettő lekérdezés elég.
Select akármi from tábla
Where feltételek (nyilván az alap eset, amikor még where sincs) queryEz az alap lekérdezésed, ami csak egy alap, de ilyen formában sose kell lefuttatnod.
1. lekérdezés: alap query count-ja, azaz maxmimum hány sornyi adatod van (ez is erőforrásigényes tud lenni, de amit mondtál 250k adatsor nudli, majd 6 milliárd sornál ráérhetsz ezen aggodni)
2. lekérdezés: alap lekérdezés az aktuális page-nek megfelelően (pl. 20-dik pagenek megfelelő 10 sor)azaz sose fogsz a megjelenített sorok számánál (pl. 10/20/50/100) többet elkérni a db-től. Hiszen pont erre való a pagelés.
-
nevemfel
senior tag
válasz
hellsing71 #2229 üzenetére
Emlékszem, hogy régebben használtam mysql alatt a SQL_CALC_FOUND_ROWS + FOUND_ROWS párost. Ezzel a módszerrel egy lekérdezést meg tudsz takarítani a három közül, de mindenképp érdemes lemérni, melyik módszer mennyi idő-, esetleg egyéb erőforrás nyereséget hoz, mert el tudom képzelni, hogy manapság a mindenféle gyorsítótárazás korában gyakorlatilag semennyi különbség nem lesz.
Új hozzászólás Aktív témák
- PS4 Pro 1Tb Destiny Edition Elado
- RTX 5070 Ti OC 16G/ új, bontatlan/ 3 év garancia/ beszámítás/ ingyen foxpost
- BESZÁMÍTÁS! ASUS H510M i7 10700K 16GB DDR4 512GB SSD RTX 3070 8GB ZALMAN S2 TG Chieftec 750W
- BESZÁMÍTÁS! Gigabyte GA-H610M i3 12100F 16GB DDR4 512GB SSD RX 6600 8GB Rampage SHIVA CM 600W
- BESZÁMÍTÁS! Gigabyte H610M i3 12100F 16GB DDR4 500GB SSD RTX 2060 Super 8GB Rampage SHIVA 500W
- Iphone 12 Mini 64GB // Számla + Garancia //
- ÁRGARANCIA!Épített KomPhone i5 13400F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! Xiaomi Redmi Note 13, Xiaomi Redmi Note 13 Pro, Xiaomi Redmi Note 13 Pro+
- Lenovo ThinkPad 40AF docking station (DisplayLink)
- ÚJ OMEN Transcend 14 - 14"2.8K OLED 120Hz - Ultra 7 155H - 16GB - 1TB - RTX 4060 - Win11 - 3 év gari
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest