Tôi tò mò về những bất lợi của trích dẫn số nguyên trong MYSQL truy vấnNhược điểm của trích dẫn số nguyên trong một truy vấn Mysql?
Ví dụ
SELECT col1,col2,col3 FROM table WHERE col1='3';
VS
SELECT col1,col2,col3 FROM table WHERE col1= 3;
Nếu có một chi phí hiệu quả, kích thước của nó và tại sao là những gì nó có xảy ra không? Có bất kỳ disavantages khác khác mà hiệu suất?
Cảm ơn Andrew
Edit: Lý do cho câu hỏi này
1. Bởi vì tôi muốn tìm hiểu sự khác biệt bởi vì tôi tò mò
2. Tôi đang thử nghiệm với một cách để đi qua phím composite từ cơ sở dữ liệu của tôi xung quanh trong mã php của tôi là psudo-Id-keys (PIK). Các PIK này được sử dụng để nhắm mục tiêu bản ghi. Ví dụ, cho một khóa chính (areacode, Thể loại, RecordDtm)
My PIK trong url sẽ trông như thế này:
index.php?action=hello&Id=20001,trvl,2010:10:10 17:10:45
Và tôi sẽ chọn hồ sơ này như thế này:
$Id = $_POST['Id'];//equals 20001,trvl,2010:10:10 17:10:45
$sql = "SELECT AreaCode,Category,RecordDtm,OtherColumns.... FROM table WHERE (AreaCode,Category,RecordDtm) = ({$Id});
$mysqli->query($sql):
......and so on.
Tại thời điểm này truy vấn sẽ không hoạt động vì ngày giờ (phải được trích dẫn) và nó được mở để chèn sql vì tôi đã không thoát khỏi các giá trị đó. Với thực tế là tôi sẽ không bao giờ biết PIK của tôi được xây dựng như thế nào, tôi sẽ viết một hàm chia tách Id PIK tại dấu phẩy, xóa từng phần bằng real_escape_string và đặt nó trở lại cùng với các giá trị được trích dẫn. Ví dụ: $ Id = "'20001', 'trvl', '2010: 10: 10 17:10:45'" Tất nhiên, trong chức năng này tách rời và làm sạch Id tôi có thể kiểm tra xem giá trị là một số hay không. Nếu đó là một số, đừng trích dẫn nó. Nếu nó là bất cứ điều gì, nhưng một chuỗi sau đó trích dẫn nó.
Tại sao không phải lúc nào cũng làm điều đúng đắn thay vì lo lắng về hiệu suất của việc phân tích cú pháp truy vấn sửa lỗi của bạn? –
Tại sao không phải lúc nào cũng dính vào * thứ gì đó * thay vì lo lắng về việc tối ưu hóa sớm? – strager
Bởi vì tôi muốn tìm hiểu thêm một chút về lý do tại sao chúng tôi không chỉ luôn đặt dấu ngoặc kép xung quanh tất cả các giá trị trong truy vấn. Tôi đang thử nghiệm với một cách để vượt qua các phím tổng hợp từ cơ sở dữ liệu như là duy nhất psudo Id trong mã php. – andrew