Quy trình 6 bước buộc phải biết khi tối ưu một câu lệnh SQL | SQL Execution Plan | SQL Tutorial

Поділитися
Вставка
  • Опубліковано 3 гру 2024

КОМЕНТАРІ • 81

  • @tranquochuywecommit
    @tranquochuywecommit  2 місяці тому

    Gửi mọi người Group Telegream Wecommit Public Community : www.wecommit.com.vn/wecommitcommunity ,anh em có thể trao đổi những câu hỏi , vấn đề khi xem Video và kết nối với tôi trong Group nhé (trường hợp click trực tiếp bị lỗi thì ae copy link ra browser nhé)

  • @amquanghieu4180
    @amquanghieu4180 2 роки тому +3

    Cảm ơn a nhiều. Kiến thức cực kì quan trọng cho ae làm backend

  • @lyminhhoang1319
    @lyminhhoang1319 2 роки тому +5

    em làm Backend nên nhiều khi cũng chỉ nghĩ là do câu query của mình chưa tối ưu nên chậm mà xem xong video này đc mở mang tầm mắt hẳn

    • @tranquochuywecommit
      @tranquochuywecommit  2 роки тому

      Mình còn rất nhiều bài viết phân tích khác (không chỉ video), anh em có thể tham gia nhóm Zalo này để đọc thêm những phân tích về tối ưu SQL nhé: wecommit.com.vn/zalogroup

  • @futhedude4848
    @futhedude4848 5 місяців тому

    VD về set biến để tái sử dụng chiến lược thực thi hay quá ạ.

  • @nghiahaxuan6700
    @nghiahaxuan6700 Рік тому

    Thật sự rất cảm ơn chia sẻ của anh, những ae dev ít kinh nghiệm thì rất hiếm có cơ hội tìm tòi ra được kiến thức như thế này, vừa rồi em làm task update SQL để cải thiện performance nếu biết được điều này sớm có lẽ đã làm tốt hơn rồi. Cảm ơn a

  • @vangvuongachai1013
    @vangvuongachai1013 4 місяці тому

    hay quá anh ạ , giải thích chi tiết cặn kẽ dễ hiểu , thanks anh.

  • @huynhtay123
    @huynhtay123 Рік тому

    Anh giải thích hay quá, cảm ơn anh đã chia sẽ kiến thức với mọi người ạ, thanks anh.

  • @nthlam._17
    @nthlam._17 Місяць тому

    cảm ơn anh đã chia sẻ ạ

  • @duongthenho3496
    @duongthenho3496 3 місяці тому

    Hay quá anh ơi, kiến thức rất bổ ích ạ

  • @J2TeamNNL
    @J2TeamNNL Рік тому +1

    Quá xịn, quá xứng đáng để chia sẻ ạ

  • @diepsang6432
    @diepsang6432 Рік тому

    Video rất hay, cảm ơn anh vì đã chia sẻ !!

  • @bactran7799
    @bactran7799 Рік тому

    rõ ràng, dễ hiểu. Cảm ơn anh đã chia sẻ

  • @kane-tech
    @kane-tech 11 місяців тому

    quá tuyệt, triệu like cho anh. Mong anh ra thêm nhiều video nữa.

    • @tranquochuywecommit
      @tranquochuywecommit  11 місяців тому

      vẫn ra đều video anh em nhé. Anh em đăng ký kênh để nhận thông tin ngay khi có video mới nhá

  • @kieuphongeg
    @kieuphongeg Рік тому

    Rất hay, xứng đáng like mạnh nhé mn

  • @dangkhanhtran8775
    @dangkhanhtran8775 11 місяців тому

    quá là hay, đó giờ em học về sql chủ yếu là cách dùng ko đi sâu được đến vậy. Cảm ơn anh nhiều.

    • @tranquochuywecommit
      @tranquochuywecommit  11 місяців тому

      Em đăng ký kênh để nhận các video phân tích chuyên sâu rât thú vị sắp tới nhé.
      Cảm ơn em đã quan tâm và ủng hộ kênh của anh

  • @kienphamthanh3072
    @kienphamthanh3072 3 місяці тому

    hữu ích, cảm ơn chia sẻ của anh

  • @tranyennhi3181
    @tranyennhi3181 2 роки тому +1

    video hay và cách anh diễn giải rất dễ hiểu, cám ơn anh nhiều :D mong anh ra thêm nhiều series hơn nữa

    • @tranquochuywecommit
      @tranquochuywecommit  2 роки тому +1

      Ngoài video anh còn viết rất nhiều bài viết (có bài viết mới hàng tuần), em có thể vào nhóm này để cập nhật toàn bộ danh sách bài viết của anh nhé: wecommit.com.vn/zalogroup.
      Video youtube thì anh cũng đăng đều đặn, em đăng ký kênh để nhận các video mới một cách nhanh nhất.
      Anh cũng cảm ơn sự ghi nhận của em, những lời của em tiếp thêm động lực cho anh :)

  • @luxsurj9597
    @luxsurj9597 8 місяців тому

    Hay quá, cảm ơn anh nhiều

  • @ngochunglongnguyen4523
    @ngochunglongnguyen4523 Рік тому

    Quá đỉnh, thực tiễn và dễ hiểu 👏

  • @tuilaptrinh
    @tuilaptrinh 9 місяців тому

    Video hay … nhưng giờ hầu hết các web framework sẽ lo phần này rồi, các dev cũng đỡ bận tâm … nhưng mấy thánh dev tool dựa vào database của app khác thì nên quan tâm.

  • @nbvvbn1862
    @nbvvbn1862 9 місяців тому

    rất tâm huyết. 1 like

  • @Doanpham_004
    @Doanpham_004 2 роки тому

    Hay quá luôn anh! Được mở mang tầm mắt!!

    • @tranquochuywecommit
      @tranquochuywecommit  2 роки тому

      Mình còn rất nhiều bài viết phân tích khác (không chỉ video), anh em có thể tham gia nhóm Zalo này để đọc thêm những phân tích về tối ưu SQL nhé: wecommit.com.vn/zalogroup

  • @rikinguyen8542
    @rikinguyen8542 2 роки тому

    Em cảm ơn anh đã chia sẻ kiến thức bổ ích ạ :D

    • @rikinguyen8542
      @rikinguyen8542 2 роки тому

      Hy vọng anh sẽ ra thêm nhiều video tuyệt vời như vậy nữa ^^

  • @phongang7508
    @phongang7508 2 роки тому

    Hay quá ạ, em cảm ơn anh nhiều ạ

  • @BinhLe-hj9dv
    @BinhLe-hj9dv Рік тому

    Tuyệt.vời quá a ạ

  • @nguyenduynhan3549
    @nguyenduynhan3549 7 місяців тому

    Anh có bài hướng dẫn nào liên quan đến tạo một máy chủ phụ từ máy chủ chính và chạy song song không ạ?

  • @LinhNguyen-fl1th
    @LinhNguyen-fl1th 4 місяці тому

    quá hay anh êi

  • @luong87mipec
    @luong87mipec Рік тому

    Rất hay

  • @giabinhhoang2351
    @giabinhhoang2351 5 місяців тому

    ap dụng giải thuật này trong select để transform data đc ko a ?

  • @DuyTran-ss4lu
    @DuyTran-ss4lu 11 місяців тому

    Hay quá a

  • @ZenYouthVN
    @ZenYouthVN 10 місяців тому

    a cho em hỏi, nếu là viết trong procedure có truyền biến từ webserver lên, xử lý logic sẽ sử dụng các biến đó, thì TH này có đươc hiểu đúng như chiến lược anh chỉ không anh nhỉ

  • @reoteuray9823
    @reoteuray9823 Рік тому

    theo kiến thức hạn hẹp của mình thì
    bth mọi người viết ứng dụng sẽ có các framework orm giúp gen querry nên nó sẽ ko tối ưu, còn được viết trực tiếp raw querry thế này thì sẽ tối ưu hơn, nhưng cái này sẽ tùy thuộc vào độ am hiểu của lập trình viên về hệ quản trị đang dùng, chưa kể nếu ltv non tay mà viết raw querry sẽ dễ dẫn đến các lỗi sql injection, chưa kể nếu viết querry thuần sẽ dễ dẫn đến việc nếu đổi hệ quản trị là có khả năng xảy ra rất nhiều bug, nên người ta sinh ra trường phái viết code mà đẩy hết logic xử lý lên tầng application lun, xem hệ quản trị như nơi để lưu trữ thôi, thậm chí mấy khái niệm về chuẩn hay tham chiếu khóa đưa luôn lên tầng application cho nó handle luôn, ko còn viết procedure dưới hệ quản trị nữa

    • @tranquochuywecommit
      @tranquochuywecommit  Рік тому +1

      Mình cũng có những buổi phân tích với doanh nghiệp về lợi và hại khi đẩy hết việc xử lý logic lên tầng app xử lý.

    • @phanmemchamcongHRADEnterprise
      @phanmemchamcongHRADEnterprise Рік тому

      nếu bạn viết vậy thì làm sao làm đa ứng dụng được: giờ 1 hệ thống có web, có app desktop, app mobile. phải viết chugn phần lớp services. mà viết lên app thì data lớn làm sao xử lý dc về bộ nhớ và thuật toán sắp xếp bằng DB dc.

    • @phanmemchamcongHRADEnterprise
      @phanmemchamcongHRADEnterprise Рік тому

      mình làm app có db tới hơn 10tr records và còn phải tính toán trước khi tạo 1 record nữa, tốc độ bị chậm vì ảnh hưởng ở cả 2 bước tính toán ra kq của record và lưu trữ record

    • @reoteuray9823
      @reoteuray9823 Рік тому

      @@phanmemchamcongHRADEnterprise nếu đi theo hướng này thì người ta sẽ tách thành nhiều service dạng microservice, mỗi service sẽ chỉ chuyên trách 1 nhóm chức năng nào đó nên db ko quá to đâu

  • @lewanluo
    @lewanluo 10 місяців тому

    Ở ví dụ cuối nếu chúng ta dùng với @Query custom ở các lib jdbc hay orm mà dùng với parameter là name or index? Thì nó có bị phân tích lại chiến lược thực thi không a nhỉ :)

  • @HaiNguyen-jy3yi
    @HaiNguyen-jy3yi Рік тому

    quá hay

  • @PhuMai1984
    @PhuMai1984 2 роки тому

    Rất hay. Thank bạn.

    • @tranquochuywecommit
      @tranquochuywecommit  2 роки тому +1

      Mình còn rất nhiều bài viết phân tích khác (không chỉ video), anh em có thể tham gia nhóm Zalo này để đọc thêm những phân tích về tối ưu SQL nhé: wecommit.com.vn/zalogroup

  • @reviewnganhhoc1942
    @reviewnganhhoc1942 Рік тому

    anh cho em hỏi so với trường hợp anh đã tối ưu như trong video đem so sánh với trường hợp mà mình when IN (...) thì kết quả như nào anh nhi? Mong anh giải thích giúp.

  • @alihem9636
    @alihem9636 Рік тому

    anh vừa đẹp trai lại nói chuyện dễ hiểu nữa, em chỉ được 50% của anh, em được vế 1 :'(

  • @trainguyen3370
    @trainguyen3370 Рік тому

    hay qua anh oi

    • @tranquochuywecommit
      @tranquochuywecommit  Рік тому

      Cảm ơn anh em. Anh em có thể tìm đọc thêm cả các bài viết của mình trên wecommit.com.vn nhé

  • @nghiatran1509
    @nghiatran1509 9 місяців тому

    xin hỏi làm sao import file txt vào SQL server ? xin cám ơn.

  • @TuanHoang-pi2xl
    @TuanHoang-pi2xl 8 місяців тому +1

    Mình hỏi chút cái B1 ở câu lệnh thứ 2 nó được gán với giá trị của FOR i IN 1..100000 ở chỗ nào nhỉ? nếu nó không gán được thì mình thấy câu lệnh thứ 2 luôn luôn lấy 1 giá trị là B1

  • @tranucthong1140
    @tranucthong1140 2 роки тому

    Nhờ bác chạy lại và phân tích thêm trong trường hợp 1 nếu chạy lại lần 2, lần 3 => lúc này execute plan đã có thì có chậm hơn trường hợp 2 không?

    • @tranquochuywecommit
      @tranquochuywecommit  2 роки тому +1

      Cảm ơn anh em vì câu hỏi rất thú vị.
      Nếu giữ nguyên việc truyền giá trị (trường hợp 1 trong video), chúng ta chạy lần 2, lần 3 hoặc các lần sau đó nữa thì vẫn không tối ưu bằng so với việc sử dụng Biến (trường hợp 2 trong video) anh em nhé.
      Mình có những bài viết để anh em đọc bổ trợ liên quan phần tối ưu, anh em có thể tham gia nhóm này để đọc và cập nhật những bài viết của mình: wecommit.com.vn/zalogroup

  • @criminal9741
    @criminal9741 Рік тому

    Anh có thể hướng dẫn check với Stored Procedure không ạ. Vì trong sp xử lý khá nhiều với bảng temp nên em không biết nên check như nào ạ, thank anh !

    • @tranquochuywecommit
      @tranquochuywecommit  Рік тому

      Với các thủ tục có cách thức tiếp cận tương tự thôi anh em. Anh em có thể tham gia cộng đồng của mình và nêu các vướng mắc trong dự án thực tế, chúng ta cùng trao đổi trên đó thì sẽ giúp ích nhất cho anh em.
      Link tham gia cộng đồng: facebook.com/groups/1222038335162578

  • @acbafide
    @acbafide 10 місяців тому

    hay

  • @dangchithao
    @dangchithao 4 місяці тому

    Video hay, nhưng OK hơi nhiều =))

  • @dangtran8513
    @dangtran8513 Рік тому

    Trường hợp hợp 2 session khác nhau cùng thực thi cùng 1 câu lệnh, mình viết theo kiểu truyền biến :B1. Như vậy có tận dụng được execution plan không anh Huy?

    • @tranquochuywecommit
      @tranquochuywecommit  Рік тому

      Hai session khác nhau vẫn tái sử dụng execution plan bình thường anh em nhé.

    • @dangtran8513
      @dangtran8513 Рік тому

      @@tranquochuywecommit anh cho em hỏi thêm, có phải mình cứ viết script vào trong store procedure là execution plan được tận dụng không ạ?
      hay phải viết theo dạng chuỗi rồi execute immediate

    • @tranquochuywecommit
      @tranquochuywecommit  Рік тому

      hiểu cứng nhắc thế thì lại không đúng anh em nhé

    • @dangtran8513
      @dangtran8513 Рік тому

      @@tranquochuywecommit vâng, cảm ơn anh đã chia sẻ

  • @Em_Son_Khong_Phe
    @Em_Son_Khong_Phe Рік тому

    anh làm nguyên khóa sql cơ bản đến nâng cao đi ạ

    • @tranquochuywecommit
      @tranquochuywecommit  Рік тому

      Anh có đấy, từ cơ bản đến nâng cao và kinh nghiệm làm dự án.

    • @thompham8903
      @thompham8903 Рік тому

      @@tranquochuywecommit cho em xin thông tin ạ

    • @tranquochuywecommit
      @tranquochuywecommit  Рік тому

      @@thompham8903 wecommit.com.vn/chuong-trinh-dao-tao-quan-tri-co-so-du-lieu-tu-tin-lam-chu-100-cong-viec/ đây nhé anh em

  • @baobaostore
    @baobaostore Рік тому +1

    Khi em search google với từ khóa "hard parse" kết quả tìm kiếm chỉ gợi ý kết quả tìm kiếm cho db Oracle, em đã thử "hard parse mySQL", "hard parse SQL Server" đều không có kết quả, liệu hard parse nó có đúng với mọi db. Em cảm ơn

  • @dongta102
    @dongta102 6 місяців тому

    Cái này có vẻ không đúng với postgre ạ. E đã thử 100.000 bản ghi với postgre mà không thấy sự khác nhau gì cả

  • @nguyenhoanganh2k1
    @nguyenhoanganh2k1 Рік тому

    anh ơi, cho e hỏi là nó check xem câu lệnh đã thực thi chưa thì nó sẽ kiểm tra câu lệnh đã dc thực thi hay chưa trong cùng 1 transaction hay nếu có cùng câu lệnh như vậy dc thực thi từ vài ngày trc nhưng xong tắt máy di và bật lại thì nó có coi câu lệnh đó đã dc thực thi r để nó bỏ qua bước hard parse cho câu lệnh thứ 2 không anh?

    • @tranquochuywecommit
      @tranquochuywecommit  Рік тому +1

      "tắt máy và bật lại" ý của em là tắt từ máy client hay là tắt máy của database server nhỉ.
      Bản chất nếu tắt từ database server thì tất cả phần bộ nhớ (chiến lược thực thi được lưu trên đó) sẽ bị xóa và phải phân tích lại từ đầu, sau khi bật database server lên.
      Còn việc tắt máy của client thì không ảnh hưởng gì cả. Lần sau em thực hiện thì nó bỏ qua bước hard parse.

    • @nguyenhoanganh2k1
      @nguyenhoanganh2k1 Рік тому

      @@tranquochuywecommit thanks anh nhiều ạ. Nhưng e vẫn còn thắc mắc nữa mong a giải đáp giúp e vs ạ. Nếu client lên tới vài triệu thì server nó cũng lưu trữ cả hàng triệu chiến lược trc đó ạ.

    • @khamblue
      @khamblue 7 місяців тому

      @@nguyenhoanganh2k1 ừ đúng câu hỏi thú vị.

  • @nguyenphuong3836
    @nguyenphuong3836 Рік тому

    1