Các bác có query sql kiểu này không?

cái quan trọng thường là condition, có optimizw cũng optimize cái này chứ tên cột đáng là bao
 
Cần field nào thì select field đó thôi nhé, sẽ tăng performance lên rất nhiều, đặc biệt khi table có mấy field kiểu long text, medium text .... query mà có chứa mấy field dạng này thì chậm thấy sợ luôn :angry:
p/s: Cái mình đang nói tới là mysql nhé
 
Sửa lần cuối:
quan điểm của tui là: "premature optimization is the root of all evils". Optimize cái gì cũng có trình tự với phương pháp của nó. Cứ select * thoải mái, cho tới khi gặp performance trong SQL thì analyze nó rồi đánh index (thiếu gì cách để check nhỉ), nếu đánh index rồi mà nó vẫn chậm do nhiều column quá thì lúc đó mới hạn chế column lại, còn nó vẫn chậm thì lúc đó mới tính tới chuyện cache này nọ.

mà hầu như đoạn đánh index là nó giải quyết được kha khá trường hợp rồi.
có tin là đánh index xong chạy chậm đi ko :P
 
quan điểm của tui là: "premature optimization is the root of all evils". Optimize cái gì cũng có trình tự với phương pháp của nó. Cứ select * thoải mái, cho tới khi gặp performance trong SQL thì analyze nó rồi đánh index (thiếu gì cách để check nhỉ), nếu đánh index rồi mà nó vẫn chậm do nhiều column quá thì lúc đó mới hạn chế column lại, còn nó vẫn chậm thì lúc đó mới tính tới chuyện cache này nọ.

mà hầu như đoạn đánh index là nó giải quyết được kha khá trường hợp rồi.
thím có thể nói rõ về đánh index hơn đc ko nhỉ. e có dùng mà ko hiểu cơ chế của nó lắm.
 
Ví dụ em chỉ cần lấy ra 1 vài cột của 1 record, nhưng em thường lười viết hàm chung lấy toàn bộ (select * ) cột đó ra rồi dùng đi dùng lại trong toàn ứng dụng

Mình nghĩ việc này không ảnh hưởng performance mấy, anh em nghĩ sao?
Có ảnh hưởng tới performance bạn ah.
Nếu DB bên dưới là dạng row-based thì RAM của App bị đầy hơn vì phải chứa tất cả các cột dù chỉ cần một số cột.
Nếu DB là dạng column-based thì còn ảnh hưởng hơn, ảnh hưởng từ việc đọc dữ liệu từ ổ cứng của DB.
 
thím có thể nói rõ về đánh index hơn đc ko nhỉ. e có dùng mà ko hiểu cơ chế của nó lắm.
nói 1 cách nôm na là ta thông báo database: "tôi có 1 số column mà tôi hay query, ông đưa column này vào tầm ngắm cho tôi với" :D database sẽ đối xử với column (hoặc 1 số column) đó theo 1 cách đặc biệt hơn. vd dễ nhất tui có table users mà trong đó có column email, tôi viết:

CREATE UNIQUE INDEX users_email_uniq_idx ON users(email);

câu này mang 2 nghĩa:
1. vừa là để nhắc nhở DB: mày nhớ ko insert trùng email
2. tao hay query: select * from users where email = '?' lắm, mày nhớ optimize cho tao.
 
cần cái gì thì lấy cái đó, update cols nào thì chỉ nên update cols đó (atomic update)
đọc mấy cái tranh luận orm với raw-query mà nản.
 
Sao nhiều anh trong này lại có quan điểm đánh giá việc thiết kế db dựa trên số lượng cột nhỉ? Số lượng cột nhiều hay ít thì tùy thuộc vào bài toán nghiệp vụ chứ các anh. Còn việc thiết kế thì nó có chuẩn hết cmnr, "database normalization" làm gì có quy định số cột thế nào là quá nhiều? Hỏi các anh có quan điểm đấy thì lý do gì mà một bảng nhiều cột thì lại là bad practice? Các anh cho tôi mở rộng tầm mắt với =))
 
Thật ra em nghĩ bác nên viết dần vì dù gì nếu bác theo nghề này thì cái tư tưởng đó cũng nên bị gỡ bỏ đi là vừa.
Tiện tay 1 tý nhưng hôm sau debug khổ lắm, vì nó có thể gây ra cursor limit, oom chẳng hạn.
 
Select * dĩ nhiên chậm hơn select cột rồi. Thím có thể dùng profiler để xem dung lượng đọc ghi.
 
Không cần nhiều col đâu, chỉ cần 1 col thừa mà col đó là kiểu nvarchar max luư nội dung gì đó kiểu 1 đoạn văn dài dài chút là đái ra máu ngay.

Với mình thì network data movement (ở đây là từ tầng database đến tầng application) luôn là 1 trong những thứ khủng khiếp nhất với mình, chứ cpu với disk io chả là gì.
 
Vậy 1 câu select 100 column từ 1 table 200 column và 1 câu select 100 column từ 10 table 20 column, thì bác cho mình hỏi cái nào nhanh hơn?
Trường hợp nào bác phải query nhiều vậy :)
Bài toán của bác trong trường hợp export data thì chắc chắn là nhanh hơn.
Còn trong page index, page show, edit, việc nhanh hơn có nhìn thấy ko ?

T ko phải fan của joins (join nhiều bảng nhìn very phức tạp), split query dễ control hơn.
Cứ chia để trị cho nó đơn giản, code, maintaince dễ hiểu hơn.

Chắc chưa trải nghiệm core banking. Table vài trăm UDF columns là bình thường.

Tại sao họ lại làm như thế bạn ơi, xin được chỉ giáo
 

Thống kê chủ đề

Ngày tạo
Donald Trump USA_No1,
Người trả lời cuối
d.n.c.m,
Trả lời
109
Lượt xem
12.822
Quay lại
Lên đầu trang