Select 1 cột và Select * - bất ngờ về kết quả so sánh hiệu năng | Tối ưu SQL | SQL Tutorial
Вставка
- Опубліковано 8 вер 2024
- #postgresql #postgresqltutorial #postgres
Mục tiêu: Tôi nhận được nhiều câu hỏi về vấn đề select 1 cột và select * thì có khác nhau về hiệu năng thực thi câu lệnh hay không, trong video này anh em cùng nhau giải đáp và demo thực tế nhé
Ghi chú: Nếu bạn là một lập trình viên và muốn phát triển sự nghiệp một cách nhanh chóng hơn. Tôi có một khoá học có thể giúp bạn phát triển rất nhanh (cả về CHIỀU RỘNG và CHIỀU SÂU), tại khoá học này bạn sẽ được chia sẻ tất cả những kinh nghiệm và kiến thức của tôi đã tích luỹ trong hơn 10 năm trực tiếp điều hành Wecommit - công ty chuyên tư vấn và tối ưu các cơ sở dữ liệu và hệ thống lớn.
Xem chi tiết khoá học của tôi ở đây: wecommit.com.v...
Bạn có thể xem các dự án mà tôi đã trực tiếp thực hiện tại đây: wecommit.com.v...
🎯 Một số Video khác bạn có thể xem:
- Quy trình 6 bước phải biết khi tối ưu câu lệnh SQL: • Quy trình 6 bước buộc ...
- Hiểu toàn bộ kiến thức về PostgreSQL trong 1h30 phút: • Hiểu toàn bộ PostgreSQ...
- Học SQL Server trong 60 phút : • Học SQL Server trong 6...
- Học MongoDB trọn vẹn trong 1 giờ 30 phút: • Học MongoDB trọn vẹn t...
- Hiểu kiến trúc của cơ sở dữ liệu Oracle trong 20 phút: • Hiểu Oracle Database t...
📱 Nếu bạn muốn liên hệ với tôi:
Zalo: 0888549190
Linkedin: / huytq
Facebook: / tranquochuy.toiuu
🌐 Nguồn tài liệu: Tôi tổng hợp từ các kiến thức và kinh nghiệm của bản thân trong hơn 10 năm làm các dự án tối ưu cơ sở dữ liệu.
#toiuu100x #tranquochuy #wecommit #databasedesign #databaseperformance #databasetutorial #toiuucosodulieu #thietkecosodulieu #toiuusql
Tôi có 1 chương trình sẽ khiến anh em DEV trở nên KHÁC BIỆT nhờ năng lực và tư duy tối ưu SQL, tối ưu Database. Đây là chương trình có phí, do tôi trực tiếp thiết kế và truyền lại toàn bộ kinh nghiệm của bản thân mình. Các bạn quan tâm có thể xem chương trình "Từ điển tối ưu 100x hiệu năng" này tại đây: wecommit.com.vn/tu-dien-toi-uu-100x-hieu-nang/
Nếu các anh em thấy thấy video có giá trị, hãy like video để mình có thêm động lực và tiếp tục hành trình chia sẻ các nội dung mới nhé.
những video của anh rất thực tế và đầy kiến thức, mong anh sẽ ra thêm nhiều video nữa cho cộng đồng. Một kệnh cực hay về Database
Cảm ơn những năng lượng tích cực từ comment của anh em.
Bài chia sẻ hay và rất bổ ích. Mong anh có thể chia sẻ nhiều hơn cho cộng đồng.😍
Cảm ơn anh em. Những bình luận tích cực và tình cảm của anh em là động lực và năng lượng cho tôi tiếp tục hành trình chia sẻ.
Bổ ích quá anh ơi, những kiến thức sharing của anh rất thưc tế, có giá trị và mang tính ứng dung cao ạ .
Cảm ơn sự ủng hộ của anh em.
cám ơn anh vì những kiến thức hữu ích, giờ mới hiểu bản chất của việc Select 1 cột và Select * là phụ thuộc vào cách viết index cho các field ( select hay where ,...) và chiến lược thực thi.
có rất nhiều video phân tích khác trong kênh, em có thể xem thêm để biết nhiều khía cạnh khác nữa em nhé.
Chúc em thu được nhiều giá trị hữu ích cho bản thân mình.
Cảm ơn anh rất nhiều về kiến thức đã chia sẻ ạ
Hay qua! Cam on anh
Cảm ơn bạn! Bài giảng rất hay vì chi tiết. Qua Video bạn đã chỉ ra muốn giảm chi phí thì phải tạo Index. Mình có câu hỏi này mong bạn giải thích thêm: Điều gì xảy ra nếu ta tạo Index cho tất cả các bảng?
Em nghĩ trên trường hợp thực tế rất ít case study mà index cho tất cả các trường trong tất cả các bảng, nếu có thật thì khó tồi
Bai chia se rat huu ich. Cam on anh!
Hay quá anh ơi, em đang chơi vs postgresql mấy năm nay rồi mà amateur quá, giờ cho anh chia sẻ thông tin thì quá tuyệt vời. Chúc anh thành công vs dự định này
xịn đét. giờ mới xem được :v từ giờ thiết kế DB sẽ chăm đánh index hơn :v thanks anh ạ
Rất hay, mong a có 1 series đầy đủ về DB và so sánh các loại DB vs nhau để ae học hỏi ❤
Cảm ơn anh, đã chia sẻ những kiến thức rất chi tiết và hữu ích về bản chất khi thực thi câu lệnh sql! 🎉
Chia sẻ rất bổ ích. Cám ơn anh
Các bài rất hữu ích. Cảm ơn thầy Huy nhé
Cảm ơn Thầy Huy, bài chia sẻ của Thầy rất hay và ý nghĩa
cảm ơn anh. Giờ mới hiểu ý nghĩa Select *
quá hay anh ạ, mong anh ra thêm video về phần này
Anh em đăng ký kênh nhé, mình sẽ còn tiếp tục chia sẻ nhiều nội dung trong thời gian tới.
Cộng đồng cảm ơn anh rất nhiều ạ
cảm ơn anh em đã ủng hộ kênh của mình.
Về tối ưu db thì trên kênh có nhiều video áp dụng luôn vào thực tế, anh em có thể xem cùng, bổ trợ thêm cho video này anh em nhé
*_Cám ơn thầy đã chia sẻ ạ_*
Cảm ơn anh Huy giúp em hiểu ra được nhiều điều
Những bình luận như thế này là động lực giúp anh tiếp tục chia sẻ các kiến thức và kinh nghiệm của mình. Cảm ơn em vì điều ấy.
*_Công nhận thầy dùng mic dễ nghe hơn, không bị ồn ạ_*
Cảm ơn anh. Hay quá ạ
anh có 1 video full về PostgreSQL trên kênh này đấy, em có thể xem để có nhiều thứ chi tiết và bổ trợ cho video này nhé
video hay quá anh ơi!
Anh em thấy sao về dự định mình chia sẻ cuối video?
Quá hay!
Anh em like video để mình thêm động lực nhé. Cảm ơn anh em nhiều.
cảm ơn anh Huy rất nhiều.
Cảm ơn anh, chúc anh nhiều sức khỏe
cảm ơn anh em.
quá hay luôn
Cảm ơn anh em.
Theo mình hiểu thì SELECT thừa cột tuy có cùng cost, nhưng vừa tốn RAM để lưu trữ dữ liệu thừa, lại vừa tốn thời gian đọc những cột thừa từ ổ cứng. Vừa mất thời gian, vừa mất dung lượng, nên hạn chế tối đa việc SELECT *
Đúng rùi, cost để query là như nhau nhưng thừa cột thì sẽ tốn ram chưa kể với remote db thì payload để transfer data cũng lớn hơn nên trễ hơn
thực tế thì chắc là chẳng bao giờ dùng select * trong product đâu bác
Ủng hộ a chia sẻ kiến thức về postgresql nha anh
Hay quá
Cảm ơn anh em. Dành tặng 1 like cho video này anh em nhá.
giờ mới hiểu vấn đề mà lâu nay tưởng đúng
quá hay anh
cảm ơn anh, video rất hay ạ
Cảm ơn sự ủng hộ và tình cảm của em.
kiến thức quá là cơ bản
Bài chia sẻ rất ý nghĩa, cảm ơn Thầy. Thầy cho em hỏi chút là lúc trước thầy làm về mảng web hay thuần về data thôi ạ?
chuyên về tối ưu cơ sở dữ liệu anh em nhé
Hay quá a
Em cảm ơn anh đã chia sẻ kiến thức rất hữu ích.
Em có 1 thắc mắc mong được anh chỉ bảo.
Trong video của anh có 2 câu query ứng với 2 cost như sau:
explain select * from payment
seq scan on payment ( cost = 0.00 253.96..)
explain select * from payment where amout = 1.99
seq scan on payment ( cost = 0.00 290.45..)
như vậy có thể nói là câu query không điều kiện where sẽ nhanh
hơn câu query có điều kiện where. ( vì 253.96 < 290.45)
tuy nhiên trong thực thế làm việc thì với csdl lớn
khi query có điều kiện where sẽ nhanh hơn rất nhiều. ( từ khi thực thi đến khi hiển thị data sẽ nhanh hơn)
anh có thể chỉ giúp em nguyên nhân được không ạ?
em xin cảm ơn.
Cảm ơn anh ạ
good job man
Anh ơi nếu đối với bảng lưu trữ dạng cột như parquet thì sao ạ?
Như vậy thì nếu xét về chiến thuật thực thi thì lấy 1 cột hay nhiều cột cũng như nhau(trường hợp select có cả cột không index và where), nhưng về mặt thời gian thì 1 cột sẽ nhanh hơn nhiêu.
đúng rồi em, việc này chiến lược thực thi như nhau đồng nghĩa với mức độ ảnh hưởng hiệu năng là tương đương. Còn thời gian trả ra bị ảnh hưởng bởi dung lượng dữ liệu + băng thông em nhé.
@@tranquochuywecommit PM bên e chỉ quan thời gian thôi :( còn lại không care gì hết.... e chả biết phải giải thích sao hic
uh, hôm nào để anh chia sẻ về bản chất tối ưu cho bên em, rủ cả bác PM tham dự em nhé
@@tranquochuywecommitoke anh iu
có ai biết kênh youtube nào dạy web chất lượng như kênh này dạy database không ạ?
Hóng serries postgresql của sếp
Cơ chế này chỉ áp dụng cho Postgresql hay cho cả MySQL, Oracle luôn ạ?
Quá hay
Cảm ơn anh em. Hãy like video để mình có thêm động lực nhé.
Cho em hỏi, các kiến thức ở trên anh chia sẻ nó có phụ thuộc vào DBMS không ạ, hay DBMS nào cũng sử dụng các kĩ thuật anh vừa chi sẻ.
Kiến thức mình chia sẻ là bản chất nên đúng với các loại RDBMS (Oracle, PostgreSQL, SQL Server, MySQL...). Các database khác nhau chỉ sử dụng các thuật ngữ khác nhau về chiến lược thực thi thôi (Ví dụ: Seq Scan trong PostgreSQL thì giống như Full Table Scan trong Oracle).
Cứ tự tin áp dụng đối với RDBMS của bạn nhé.
@@tranquochuywecommit cảm ơn anh vì video hữu ích này
Mong a chia sẻ về postgresql
Okie anh em, anh em đăng ký kênh để nhận thông báo ngay khi có nội dung này nhé.
18:50 Dự định về chia sẻ kiến thức PostgreSQL -> Like -> Đặt gạch giữ chỗ nha @Huy
okie anh em nhé. Đang triển khai rồi anh em ah
scan row có phải là nó scan qua từng column name đúng ko a
Hay quá ạ, a ơi, bên mongo db nó có như thực hiện như bên sql không a?
chiến lược thực thi là nguyên lý chung của các loại database anh em nhé
quá hay anh ạ
anh cho e hỏi, thế thì table có bao nhiêu column cần thiết thì mình đánh index hết thì nó ảnh hưởng gì ko anh? Cảm ơn anh
không làm như thế em ah, đánh index phải có chiến lược và nghệ thuât
Nếu cứ có bao nhiêu cột mà đánh index hết luôn thì lại thành dở ngay, đặc biệt trong các hệ thống OLTP.
Bản chất là phải chọn được số cột ít nhất có thể nhưng manh lại hiệu quả chiến lược thực thi tốt nhất.
❤
Cảm ơn tình cảm và sự ủng hộ của anh em nhé.
Anh cho em hỏi tool nào hỗ trợ xem hiệu năng như thế với ạ. Em dùng explain sql nhưng không ra được các thông số query plan ạ
tool thì anh em có thể dùng pgadmin4, dbeaver đều được
Nếu dùng explain thì thêm explain analyze cũng được
@@tranquochuywecommit vâng em cảm ơn a nhé
Bạn đấy là csdl dwh xem nó khác ji không🤗 mình nghỉ bạn đang test với csdl transaction
database nào thì cũng có chiến lược thực thi và hoạt động là như nhau anh em nhé. Tại đây mình đang không tính tới thời gian trả kết quả ra, mà chỉ tính hiệu năng phân tích trên server.
ua-cam.com/video/LBMK4CV2VoE/v-deo.html
Đoạn này a nhầm đúng không ạ ? cost = end_time - start_time chứ. Như trong video là cost = 25.36-21.34 mới đúng anh ?
Hay quá
Cảm ơn anh em đã ủng hộ nhé. Anh em đang làm việc với loại database nào thế?