Review query SQLPelatihan Pemrograman

Review query SQL: error, join, dan bagian yang lambat

Penyerahan hasil mulai 1 hariTermasuk revisiPemeriksaan kualitas
Paket
Perlindungan pembayaranSelengkapnya
  • Revisi dalam batas paket tidak dikenai biaya.
  • Jika Anda tidak merespons dalam 3 hari setelah penyerahan hasil, hasil kerja diterima secara otomatis.
Pesan · Rp 595.000

Uang ditahan saat Anda membayar dan diteruskan hanya setelah Anda menerima hasil kerja.

Review query SQL: error, join, dan bagian yang lambat

Contoh hasil

Contoh untuk paket Standar

Code review: skrip Python impor pesanan untuk toko online kecil

Apa yang dilakukan kode

  1. Membaca orders.csv dari ekspor toko.
  2. Untuk tiap baris pesanan, mencari produk berdasarkan SKU di stock.xlsx lalu mengurangi jumlahnya.
  3. Menulis stok yang diperbarui dan mencatat total ke import_log.txt.

Strukturnya jelas dan nama fungsinya baik. Sebagian besar masalah muncul karena input tidak sesuai dengan yang diharapkan skrip.

Bug dan titik lemah

#BarisTingkatMasalah
148TinggiCSV yang sama bisa diimpor dua kali; tidak ada pengecekan ID pesanan yang sudah diproses. Ini penyebab paling mungkin stok minus.
272Tinggiint(row["qty"]) crash pada nilai kosong atau "2.0" dari pesanan refund.
395SedangPencarian SKU peka huruf besar-kecil: "gt-101" dan "GT-101" dianggap produk berbeda.
4130SedangFile dibuka tanpa encoding="utf-8", sehingga nama produk dengan karakter khusus rusak di Windows.
5201Rendahexcept: kosong menyembunyikan error asli dan membuat log tidak berguna.

Potongan kode yang diperbaiki

Masalah 1: lewati pesanan yang sudah diimpor

processed = load_processed_ids("processed_orders.txt")
for row in reader:
    if row["order_id"] in processed:
        continue
    # ... logika yang sudah ada ...
    processed.add(row["order_id"])
save_processed_ids("processed_orders.txt", processed)

Alasan: setiap pesanan hanya diterapkan sekali, meski skrip dijalankan ulang pada file yang sama.

Masalah 2: baca jumlah dengan aman

raw = (row.get("qty") or "").strip()
try:
    qty = int(float(raw))
except ValueError:
    log.warning("Pesanan %s: jumlah tidak valid %r, dilewati", row["order_id"], raw)
    continue

Alasan: baris refund atau sebagian dilewati dengan catatan jelas, bukan menghentikan seluruh impor.

Masalah 3: seragamkan SKU

sku = row["sku"].strip().upper()

Terapkan .strip().upper() yang sama saat membangun kamus stok.

Gaya dan keterbacaan

  • process() panjangnya 90 baris; pecah menjadi read_orders, apply_to_stock, write_report.
  • Ganti nomor kolom "ajaib" (row[7]) dengan nama header.

Silakan uji setiap perbaikan pada salinan file Anda: kami membaca kodenya, tetapi tidak menjalankannya.

Klien: pemilik toko teh online yang menulis skrip Python 310 baris untuk mengimpor pesanan dari ekspor CSV ke spreadsheet stok Masalah yang dilaporkan: "Kadang stok jadi minus, dan skripnya crash di beberapa file."

Klien dan semua datanya fiktif.

Tentang layanan ini

Sebuah query bisa menghasilkan angka yang masuk akal tetapi tetap salah: join yang melipatgandakan baris, WHERE yang membuang NULL, LEFT JOIN yang diam-diam berubah menjadi inner join, atau fungsi pada kolom berindeks yang memaksa full scan. Kami membaca query Anda sesuai mesin database Anda, menjelaskan langkah demi langkah apa yang dihasilkan setiap bagian, serta menandai kesalahan logika dan bagian yang lambat. Query yang diperbaiki disertai catatan tentang apa yang berubah pada hasil dan mengapa.

Yang termasuk

  • Yang Anda dapatkanReview tertulis di halaman pesanan: apa yang dihasilkan setiap query, error dan bagian yang lambat berdasarkan tingkat kepentingan, dan SQL yang diperbaiki untuk mesin database Anda. Paket Premium menambahkan saran indeks berdasarkan struktur tabel dan query plan yang Anda tempelkan.
  • Join diperiksaBaris yang terduplikasi atau hilang
  • Penanganan NULLFilter dan agregat yang melewatkan nilai
  • Logika pengelompokanGROUP BY, HAVING, dan window function
  • Bagian yang lambatScan, subquery, fungsi pada kolom
  • Query yang diperbaikiDalam dialek mesin database Anda

Cara kerja

  1. 1
    BriefAnda menempelkan query dan struktur tabel
  2. 2
    MembacaKami menelusuri setiap klausa
  3. 3
    TinjauanAnda menerima error, perbaikan, dan penjelasan

Yang kami butuhkan dari Anda

Query dan pernyataan CREATE TABLE yang ditempel sebagai teks atau tangkapan layar, mesin database dan versinya, hasil yang Anda harapkan, dan untuk query yang lambat, output EXPLAIN.

Kami akan menanyakan:

  • Mesin database dan versi apa?
  • Apa yang seharusnya dihasilkan query?
  • Apakah masalahnya hasil yang salah atau kecepatan yang lambat?
  • Kira-kira berapa banyak baris di tabel utama?

Bandingkan paket

PaketDasarSQL hingga 100 barisRp 255.000StandarSQL hingga 400 barisRp 595.000PremiumHingga 1.000 baris dengan saran indeksRp 1.173.000
Tenggat1 hari2 hari3 hari
Revisi123
Baris kodehingga 100hingga 400hingga 1.000
Potongan kode yang diperbaikiYaYaYa
Saran indeksTidakTidakYa
Pesan DasarPesan StandarPesan Premium

Perlindungan pembayaran

Anda membayar saat memesan, tetapi uangnya diteruskan hanya untuk hasil kerja yang diterima.

  • Harga pastiHarga paket tidak berubah setelah Anda membayar.
  • Uang ditahanSaat Anda membayar, jumlahnya hanya ditahan. Dana diteruskan ke Dleex setelah Anda menerima hasil kerja.
  • Diperiksa sebelum penyerahanSetiap hasil melewati pemeriksaan kualitas sebelum sampai kepada Anda, dan Anda dapat melihatnya di halaman pesanan sebelum menerimanya.
  • Revisi gratisMinta revisi sesuai brief Anda sebanyak yang diizinkan paket.
  • Diterima setelah 3 hariJika dalam 3 hari setelah penyerahan hasil Anda tidak menerima hasil kerja maupun meminta revisi, hasil kerja diterima secara otomatis. Jika Anda menulis di chat pesanan setelah penyerahan hasil, pesanan akan menunggu; setelah kami menjawab, kami dapat memulai ulang hitungan 3 hari dan akan memberitahukannya di chat.
  • Dikerjakan ulang atau pengembalian dana penuhJika hasilnya tidak sesuai brief Anda dan revisi tidak memperbaikinya, atau pengerjaan memakan waktu lebih dari dua kali tenggatnya, tulis di chat pesanan: kami akan mengerjakan ulang atau mengembalikan pembayaran secara penuh.
Cara kerjanya →

Tanya jawab

Apakah Anda menjalankan query pada data saya?

Tidak. Kami tidak terhubung ke database Anda. Kami membaca SQL dan struktur yang Anda kirim, jadi uji query yang diperbaiki pada salinan sebelum digunakan di produksi.

Haruskah saya mengirim data asli?

Tidak perlu. Struktur tabel dan beberapa baris contoh rekaan sudah cukup, dan mohon jangan sertakan data pribadi.

Bisakah Anda menjelaskan query yang ditulis orang lain?

Ya. Kami menjelaskan apa yang dihasilkannya klausa demi klausa, yang sering kali merupakan cara tercepat untuk menemukan mengapa angkanya terlihat janggal.

Paket
Pesan · Rp 595.000· 2 hari