v2.5.2
Giriş yap

php sorgu hızlandırma

emmir2
488 defa görüntülendi

Merhaba 2 adet epin sitem var 2 siteyi de tek panele bağladım panel çok hantallaşamaya başladı bunu nası hızlandırtabilirim
örnek siparis sayfası.

<table class="table invoice-table" id="myTable">
  <thead>
    <tr>
      <th>
        <strong>
          <input type="checkbox" class="tumunu-sec" title="Tümünü Seç">
        </strong>
      </th>
      <th scope="col">#Site</th>
      <th scope="col">Kullanıcı</th>
      <th scope="col">İşlem Tarihi</th>
      <th scope="col">Banka</th>
      <th scope="col">Miktar</th>
      <th scope="col">İşlemler</th>
    </tr>
  </thead>
  <tbody> <?php
                                        $durum = $_GET['no'];
                                        $sql = "SELECT form.*, kullanici.kullanici_ad, banka.ad, banka.iban, web_site.logo, web_site.web_adi 
        FROM form 
        JOIN kullanici ON form.kullanici = kullanici.id 
        JOIN banka ON form.banka = banka.banka_ad 
        JOIN web_site ON form.site = web_site.typ 
        WHERE form.durum = '{$durum}' AND form.banka != 'Online_Odeme' AND form.date >= '2023-04-03'";
                                        if (isset($_POST['filtre'])) {
                                            $sql .= " AND form.site = '{$_POST['typ']}'";
                                        }
                                        $sql .= " ORDER BY form.id DESC";

                                        $stmt = $db->prepare($sql);
                                        $stmt->execute();
                                        $form = $stmt->fetchAll();
                                        $toplam = 0;
                                        if ($stmt->rowCount()) {
                                            foreach ($form as $row) {
                                                $toplam += $row['bakiye'];
                                                ?> <tr>
      <td>
        <input type="checkbox" class="form-check-input" name="odeme_id[]" value="
						<?= $row['id']; ?>">
      </td>
      <th scope="row">
        <img src="upload/
							<?= $row['logo'] ?>" alt="" style="border-radius: 50px;"> <?= $row['web_adi'] ?>
      </th>
      <td>
        <a href="kullanici-detay/
								<?= $row['kullanici'] ?>"> <?= $row['kullanici_ad'] ?> </a>
      </td>
      <td> <?= $row['date'] ?> </td>
      <td title="
							<?= $row['ad'] ?> || 
							<?= $row['iban'] ?>"> <?= $row['banka'] ?> </td>
      <td>
        <button type="button" class="btn btn-primary" data-userid="
								<?= $row['kullanici'] ?>" data-form="
								<?= $row['id'] ?>" data-bakiye="
								<?= $row['bakiye'] ?>" data-toggle="modal" data-target="#user-modal" data-balance="
								<?= $row['bakiye'] ?>"> <?= $row['bakiye'] ?> </button>
      </td>
      <td style="display: flex">
        <a class="btn 
								<?php if ($row['durum'] == 2) { ?>btn-success 
								<?php } ?>" <?php if ($row['durum'] == 1 || $row['durum'] == 3) { ?> href="verify.php?verify=
								<?= $row['id'] ?>" <?php } else { ?> <?php } ?>> <?php if ($row['durum'] == 1) { ?> Onayla <?php } elseif ($row['durum'] == 3) { ?> Onayla <?php } else { ?> Onaylı <?php } ?> </a>
        <a class="btn" href="verify.php?delete=
								<?=$row['id']?>"> Sil </a>
      </td>
    </tr> <?php } ?> <?php if(isset($_POST['filtre'])){?> <tr>
      <td colspan="3" align="right">Toplam:</td>
      <td> <?=$toplam?> </td>
    </tr> <?php } } ?> </tbody>
</table>
gokcin
280 gün önce

Merhaba,
Sorunuza uzun zaman olmuş ama çözülmemiş sorularda gördüğüm için yazmak istedim terkar.

Sorgunuzun performansını artırmak için aşağıdaki adımları düşünebilirsin:

  1. Indexleme: İlgili sütunlarda uygun indexler kullanarak veritabanı sorgularınızın hızını artırabilirsiniz. Özellikle form.durum, form.banka, form.site, ve form.date sütunları üzerinde indexleme yapabilirsiniz. Ancak, hangi sütunların indexlenmesi gerektiği, veritabanınızın boyutu ve sorgularınıza bağlı olarak değişebilir.

    Örnek indexleme sorguları:

     CREATE INDEX idx_durum ON form (durum);
     CREATE INDEX idx_banka ON form (banka);
     CREATE INDEX idx_site ON form (site);
     CREATE INDEX idx_date ON form (date);
    
  2. Veritabanı Optimizasyonu: Veritabanı tablolarınızı düzenli olarak optimize etmek, performansı artırabilir. Bu işlem, tablolardaki boş alanları temizler ve veritabanı dosyalarını düzenler.

     OPTIMIZE TABLE form;
     OPTIMIZE TABLE kullanici;
     OPTIMIZE TABLE banka;
     OPTIMIZE TABLE web_site;
    
  3. Veritabanı Bağlantısı: Veritabanı bağlantınızı optimize edebilirsiniz. Bağlantıları sık sık açıp kapatmak yerine, bir bağlantı havuzu kullanmak daha verimli olabilir.

  4. Tek Sorgu İle Veri Çekme: Gerekirse, birden çok sorgu yerine tek bir sorgu kullanarak veriyi çekebilirsiniz. Bu durumda, JOIN ifadelerini ve WHERE koşullarını birleştirerek daha efektif bir sorgu oluşturabilirsiniz.

  5. Veritabanı Sunucusu Performans Ayarları: Veritabanı sunucunuzun performans ayarlarını gözden geçirin. Özellikle veritabanı önbelleği ve sorgu önbelleği gibi ayarlar, performansı artırabilir.

Bu öneriler, sorgularınızın performansını artırmaya yardımcı olabilir. Ancak, performans sorunları çoğu zaman sistem spesifik olduğu için, uygulama ve veritabanı yapınıza özgü optimizasyonları denemelisiniz.