GÜNCELLEME sorguları optimize SQL fıkra?

5 Cevap php

Benim hayali veritabanında, ben birkaç veri sütun var. Komut için bir PHP ön-uç tasarımı, bu gerekirse kullanıcı bir başlığın tüm özelliklerini değiştirmek için izin vermek için gerekli oldu.

Son kullanıcı yerine sadece hepsini bir vasfı, aşağıdaki ifadeyi değiştirerek biter eğer:

UPDATE foo 
   SET name='bar' location='YYZ' drink='ale' 
 where user='smithj'`

Özniteliklerin iki aynı olsa bile, başlığın "smithj" her üç niteliklerini güncelleştirmek.

(MySQL, bir fark yaparsa) otomatik olarak IF EXISTS fıkrasında benzer gereksiz güncelleştirmeleri, süzmek SQL için bir yolu var mı CREATE TABLE IF EXISTS?

Teşekkürler!

5 Cevap

"Eğer şu anda sahip değerine bir sütun ayarlarsanız, MySQL bu fark ve güncellemek değil."

http://dev.mysql.com/doc/refman/5.0/en/update.html

Şahsen büyük olasılıkla bu noktada bir ön olgun optimizasyon yapmak için çalışıyoruz. Olmaları gereken bunları yapmak için üç değerleri güncelleyerek sadece iyi olacak.

Güncellemek için ne görmek için kontrol büyük olasılıkla yapmak için daha fazla mal olacak.

Cevaplamak için ilk soru neden olacak?

Gördüğüm tek nedeni performans. Ama performans sorunları iki nedenden dolayı gelebilir:

  • uygulama ve veritabanı arasında veri taşıma. Sen sadece gerçekten güncelleştirilmesi gerekiyor güncelleştirme açıklamada sütunları dahil ederek bu azaltabilir. Ama bu bir iş yeri ve biz üç sütun hakkında konuşurken muhtemelen değer değildir. Bu yaratan farklı sql deyimi büyük miktarda bazı veritabanı iç önbelleğe öldürebilir de unutmayın. Bu MySQL için doğru olup olmadığını bilmiyorum, ama bu kehanet için. (Eğer bind değişkenleri (gerekir) kullandıklarını varsayarak)

  • ve aslında veritabanındaki verileri manipüle. Ama bu aşamada, çok daha pahalı sonra aslında bu güncelleme (burada fıkra) güncellemek için kayıt bulgu. Ve ben o eski ve yeni değerler aslında aynı olduğunda, bir güncelleştirme döner herhangi bir özelliği yoktur nedeni, sanırım

Kodunuzda bunu yapmak gerekir. Her durumda, "örnek" bir sorgu için SQL injection :) ağlamalar sağlamak

, Parametrized sorguları kullanın anında onları kurmak ve güncellemek istiyorum sadece öğeleri ekleyin.

Sunny önerilen ne ile birlikte gidiyor, size sorgu parametrize var.

One option could be this (in high-level pseudocode): When a user edits an item (lets say on keyPress), you can flag that cell. You can get the value from every flagged cell, and only pass their values into your parametrized query.

Eğer satır çok sayıda yoksa Ancak, bu üzücü olan, bu performans bir fark bu kadar yapmamalıyız.