[{"data":1,"prerenderedAt":2727},["ShallowReactive",2],{"navigation_docs":3,"-tu-hoc-database-so-sanh":420,"-tu-hoc-database-so-sanh-surround":2722},[4,153],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Phỏng vấn .NET","i-lucide-briefcase","\u002Fphong-van","1.phong-van",[10,27,66,111,128],{"title":11,"icon":12,"path":13,"stem":14,"children":15,"page":26},"Tổng quan","i-lucide-compass","\u002Fphong-van\u002Ftong-quan","1.phong-van\u002F1.tong-quan",[16,21],{"title":17,"path":18,"stem":19,"icon":20},"Thị trường HCM","\u002Fphong-van\u002Ftong-quan\u002Fthi-truong","1.phong-van\u002F1.tong-quan\u002F1.thi-truong","i-lucide-trending-up",{"title":22,"path":23,"stem":24,"icon":25},"Lộ trình 7 ngày","\u002Fphong-van\u002Ftong-quan\u002Flo-trinh","1.phong-van\u002F1.tong-quan\u002F2.lo-trinh","i-lucide-calendar-days",false,{"title":22,"icon":25,"path":28,"stem":29,"children":30,"page":26},"\u002Fphong-van\u002Flo-trinh","1.phong-van\u002F2.lo-trinh",[31,36,41,46,51,56,61],{"title":32,"path":33,"stem":34,"icon":35},"Ngày 1 — C# cơ bản","\u002Fphong-van\u002Flo-trinh\u002Fngay-1-csharp-co-ban","1.phong-van\u002F2.lo-trinh\u002F1.ngay-1-csharp-co-ban","i-lucide-1",{"title":37,"path":38,"stem":39,"icon":40},"Ngày 2 — OOP và SOLID","\u002Fphong-van\u002Flo-trinh\u002Fngay-2-oop-solid","1.phong-van\u002F2.lo-trinh\u002F2.ngay-2-oop-solid","i-lucide-2",{"title":42,"path":43,"stem":44,"icon":45},"Ngày 3 — C# nâng cao","\u002Fphong-van\u002Flo-trinh\u002Fngay-3-csharp-nang-cao","1.phong-van\u002F2.lo-trinh\u002F3.ngay-3-csharp-nang-cao","i-lucide-3",{"title":47,"path":48,"stem":49,"icon":50},"Ngày 4 — Database và SQL","\u002Fphong-van\u002Flo-trinh\u002Fngay-4-database-sql","1.phong-van\u002F2.lo-trinh\u002F4.ngay-4-database-sql","i-lucide-4",{"title":52,"path":53,"stem":54,"icon":55},"Ngày 5 — ASP.NET Core và EF Core","\u002Fphong-van\u002Flo-trinh\u002Fngay-5-aspnet-efcore","1.phong-van\u002F2.lo-trinh\u002F5.ngay-5-aspnet-efcore","i-lucide-5",{"title":57,"path":58,"stem":59,"icon":60},"Ngày 6 — DSA coding","\u002Fphong-van\u002Flo-trinh\u002Fngay-6-dsa","1.phong-van\u002F2.lo-trinh\u002F6.ngay-6-dsa","i-lucide-6",{"title":62,"path":63,"stem":64,"icon":65},"Ngày 7 — Mock và HR","\u002Fphong-van\u002Flo-trinh\u002Fngay-7-mock-interview","1.phong-van\u002F2.lo-trinh\u002F7.ngay-7-mock-interview","i-lucide-7",{"title":67,"icon":68,"path":69,"stem":70,"children":71,"page":26},"Ngân hàng câu hỏi","i-lucide-database","\u002Fphong-van\u002Fngan-hang-cau-hoi","1.phong-van\u002F3.ngan-hang-cau-hoi",[72,77,82,87,92,97,102,107],{"title":73,"path":74,"stem":75,"icon":76},"C# (60+ câu)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fcsharp","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F1.csharp","i-lucide-hash",{"title":78,"path":79,"stem":80,"icon":81},"OOP và SOLID (40+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Foop","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F2.oop","i-lucide-shapes",{"title":83,"path":84,"stem":85,"icon":86},"SQL (40+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fsql","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F3.sql","i-lucide-database-zap",{"title":88,"path":89,"stem":90,"icon":91},"ASP.NET và EF (50+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Faspnet-ef","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F4.aspnet-ef","i-lucide-server",{"title":93,"path":94,"stem":95,"icon":96},"DSA và Coding (30+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fdsa-coding","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F5.dsa-coding","i-lucide-binary",{"title":98,"path":99,"stem":100,"icon":101},"HR và Soft skill (25+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fhr-behavior","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F6.hr-behavior","i-lucide-users",{"title":103,"path":104,"stem":105,"icon":106},"Design Pattern (55+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fdesign-pattern","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F7.design-pattern","i-lucide-puzzle",{"title":108,"path":109,"stem":110,"icon":91},"ASP.NET MVC và Web API","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Faspnet-mvc-webapi","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F8.aspnet-mvc-webapi",{"title":112,"itle":113,"icon":114,"path":115,"stem":116,"children":117,"page":26},"Tai Lieu","Tài liệu và Cheat sheet","i-lucide-book-marked","\u002Fphong-van\u002Ftai-lieu","1.phong-van\u002F4.tai-lieu",[118,123],{"title":119,"path":120,"stem":121,"icon":122},"Cheat Sheet","\u002Fphong-van\u002Ftai-lieu\u002Fcheatsheet","1.phong-van\u002F4.tai-lieu\u002F1.cheatsheet","i-lucide-clipboard-list",{"title":124,"path":125,"stem":126,"icon":127},"Nguồn tham khảo","\u002Fphong-van\u002Ftai-lieu\u002Fnguon","1.phong-van\u002F4.tai-lieu\u002F2.nguon","i-lucide-link",{"title":129,"icon":130,"path":131,"stem":132,"children":133,"page":26},"Phỏng vấn English","i-lucide-globe","\u002Fphong-van\u002Fenglish-interview","1.phong-van\u002F5.english-interview",[134,138,143,148],{"title":135,"path":136,"stem":137,"icon":130},"Tổng quan English","\u002Fphong-van\u002Fenglish-interview\u002Ftong-quan","1.phong-van\u002F5.english-interview\u002F1.tong-quan",{"title":139,"path":140,"stem":141,"icon":142},"Vocabulary","\u002Fphong-van\u002Fenglish-interview\u002Fvocabulary","1.phong-van\u002F5.english-interview\u002F2.vocabulary","i-lucide-book-a",{"title":144,"path":145,"stem":146,"icon":147},"Technical Q và A (EN)","\u002Fphong-van\u002Fenglish-interview\u002Ftechnical-en","1.phong-van\u002F5.english-interview\u002F3.technical-en","i-lucide-code",{"title":149,"path":150,"stem":151,"icon":152},"Behavioral (EN)","\u002Fphong-van\u002Fenglish-interview\u002Fbehavioral-en","1.phong-van\u002F5.english-interview\u002F4.behavioral-en","i-lucide-message-square-text",{"title":154,"icon":155,"path":156,"stem":157,"children":158},"Tự học","i-lucide-graduation-cap","\u002Ftu-hoc","2.tu-hoc",[159,161,287,310,333,357,384],{"title":154,"path":156,"stem":160,"icon":155},"2.tu-hoc\u002Findex",{"title":162,"icon":68,"path":163,"stem":164,"children":165},"Database","\u002Ftu-hoc\u002Fdatabase","2.tu-hoc\u002F1.database\u002Findex",[166,167,197,222,243,248],{"title":162,"path":163,"stem":164,"icon":68},{"title":168,"icon":91,"path":169,"stem":170,"children":171,"page":26},"SQL Server","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server","2.tu-hoc\u002F1.database\u002F2.sql-server",[172,177,182,187,192],{"title":173,"path":174,"stem":175,"icon":176},"1. Giới thiệu và Cài đặt","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F1.gioi-thieu-cai-dat","i-lucide-play-circle",{"title":178,"path":179,"stem":180,"icon":181},"2. Cú pháp cơ bản","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F2.cu-phap-co-ban","i-lucide-code-2",{"title":183,"path":184,"stem":185,"icon":186},"3. Truy vấn nâng cao","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F3.truy-van-nang-cao","i-lucide-git-merge",{"title":188,"path":189,"stem":190,"icon":191},"4. Đặc thù và Performance","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F4.dac-thu-performance","i-lucide-gauge",{"title":193,"path":194,"stem":195,"icon":196},"5. Q và A phỏng vấn","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F5.cau-hoi-phong-van","i-lucide-message-circle-question",{"title":198,"icon":199,"path":200,"stem":201,"children":202,"page":26},"PostgreSQL","i-simple-icons-postgresql","\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql","2.tu-hoc\u002F1.database\u002F3.postgresql",[203,206,209,212,215,218],{"title":173,"path":204,"stem":205,"icon":176},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F1.gioi-thieu-cai-dat",{"title":178,"path":207,"stem":208,"icon":181},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F2.cu-phap-co-ban",{"title":183,"path":210,"stem":211,"icon":186},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F3.truy-van-nang-cao",{"title":188,"path":213,"stem":214,"icon":191},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F4.dac-thu-performance",{"title":193,"path":216,"stem":217,"icon":196},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F5.cau-hoi-phong-van",{"title":219,"path":220,"stem":221,"icon":96},"6. Tích hợp C# và Postgres","\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Ftich-hop-csharp","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F6.tich-hop-csharp",{"title":223,"icon":224,"path":225,"stem":226,"children":227,"page":26},"MySQL","i-simple-icons-mysql","\u002Ftu-hoc\u002Fdatabase\u002Fmysql","2.tu-hoc\u002F1.database\u002F4.mysql",[228,231,234,237,240],{"title":173,"path":229,"stem":230,"icon":176},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F4.mysql\u002F1.gioi-thieu-cai-dat",{"title":178,"path":232,"stem":233,"icon":181},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F4.mysql\u002F2.cu-phap-co-ban",{"title":183,"path":235,"stem":236,"icon":186},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F4.mysql\u002F3.truy-van-nang-cao",{"title":188,"path":238,"stem":239,"icon":191},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F4.mysql\u002F4.dac-thu-performance",{"title":193,"path":241,"stem":242,"icon":196},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F4.mysql\u002F5.cau-hoi-phong-van",{"title":244,"path":245,"stem":246,"icon":247},"So sánh 3 RDBMS","\u002Ftu-hoc\u002Fdatabase\u002Fso-sanh","2.tu-hoc\u002F1.database\u002F5.so-sanh","i-lucide-columns-3",{"title":249,"path":250,"stem":251,"children":252,"icon":254},"Supabase (BaaS)","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase","2.tu-hoc\u002F1.database\u002F6.supabase\u002Findex",[253,255,259,264,269,274,278,283],{"title":249,"path":250,"stem":251,"icon":254},"i-simple-icons-supabase",{"title":256,"path":257,"stem":258,"icon":68},"1. Database","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fdatabase","2.tu-hoc\u002F1.database\u002F6.supabase\u002F1.database",{"title":260,"path":261,"stem":262,"icon":263},"2. Authentication","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fauthentication","2.tu-hoc\u002F1.database\u002F6.supabase\u002F2.authentication","i-lucide-key",{"title":265,"path":266,"stem":267,"icon":268},"3. Storage & Realtime","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fstorage-realtime","2.tu-hoc\u002F1.database\u002F6.supabase\u002F3.storage-realtime","i-lucide-zap",{"title":270,"path":271,"stem":272,"icon":273},"4. Edge Functions & AI","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Ffunctions-ai","2.tu-hoc\u002F1.database\u002F6.supabase\u002F4.functions-ai","i-lucide-brain",{"title":275,"path":276,"stem":277,"icon":181},"5. API & SDKs","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fapi-sdk","2.tu-hoc\u002F1.database\u002F6.supabase\u002F5.api-sdk",{"title":279,"path":280,"stem":281,"icon":282},"6. Platform & Deploy","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fplatform-deploy","2.tu-hoc\u002F1.database\u002F6.supabase\u002F6.platform-deploy","i-lucide-cloud",{"title":284,"path":285,"stem":286,"icon":196},"7. Interview & Q&A","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Finterview","2.tu-hoc\u002F1.database\u002F6.supabase\u002F7.interview",{"title":288,"icon":289,"path":290,"stem":291,"children":292},"TypeScript","i-simple-icons-typescript","\u002Ftu-hoc\u002Ftypescript","2.tu-hoc\u002F2.typescript\u002Findex",[293,294,297,301,306],{"title":288,"path":290,"stem":291,"icon":289},{"title":173,"path":295,"stem":296,"icon":176},"\u002Ftu-hoc\u002Ftypescript\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F2.typescript\u002F1.gioi-thieu-cai-dat",{"title":298,"path":299,"stem":300,"icon":81},"2. Type System","\u002Ftu-hoc\u002Ftypescript\u002Ftype-system","2.tu-hoc\u002F2.typescript\u002F2.type-system",{"title":302,"path":303,"stem":304,"icon":305},"3. Advanced types","\u002Ftu-hoc\u002Ftypescript\u002Fadvanced-types","2.tu-hoc\u002F2.typescript\u002F3.advanced-types","i-lucide-braces",{"title":307,"path":308,"stem":309,"icon":196},"4. Q và A phỏng vấn","\u002Ftu-hoc\u002Ftypescript\u002Fcau-hoi-phong-van","2.tu-hoc\u002F2.typescript\u002F4.cau-hoi-phong-van",{"title":311,"icon":81,"path":312,"stem":313,"children":314},"OOP","\u002Ftu-hoc\u002Foop","2.tu-hoc\u002F3.oop\u002Findex",[315,316,321,326,330],{"title":311,"path":312,"stem":313,"icon":81},{"title":317,"path":318,"stem":319,"icon":320},"1. Bốn tính chất","\u002Ftu-hoc\u002Foop\u002F4-tinh-chat","2.tu-hoc\u002F3.oop\u002F1.4-tinh-chat","i-lucide-circle-dot",{"title":322,"path":323,"stem":324,"icon":325},"2. SOLID","\u002Ftu-hoc\u002Foop\u002Fsolid","2.tu-hoc\u002F3.oop\u002F2.solid","i-lucide-shield",{"title":327,"path":328,"stem":329,"icon":106},"3. Design Pattern","\u002Ftu-hoc\u002Foop\u002Fdesign-pattern","2.tu-hoc\u002F3.oop\u002F3.design-pattern",{"title":307,"path":331,"stem":332,"icon":196},"\u002Ftu-hoc\u002Foop\u002Fcau-hoi-phong-van","2.tu-hoc\u002F3.oop\u002F4.cau-hoi-phong-van",{"title":334,"icon":305,"path":335,"stem":336,"children":337},"Generic","\u002Ftu-hoc\u002Fgeneric","2.tu-hoc\u002F4.generic\u002Findex",[338,339,344,349,354],{"title":334,"path":335,"stem":336,"icon":305},{"title":340,"path":341,"stem":342,"icon":343},"1. Khái niệm và cú pháp","\u002Ftu-hoc\u002Fgeneric\u002Fkhai-niem","2.tu-hoc\u002F4.generic\u002F1.khai-niem","i-lucide-book",{"title":345,"path":346,"stem":347,"icon":348},"2. Constraint và Variance","\u002Ftu-hoc\u002Fgeneric\u002Fconstraint-variance","2.tu-hoc\u002F4.generic\u002F2.constraint-variance","i-lucide-filter",{"title":350,"path":351,"stem":352,"icon":353},"3. C# vs TS","\u002Ftu-hoc\u002Fgeneric\u002Fso-sanh","2.tu-hoc\u002F4.generic\u002F3.so-sanh","i-lucide-git-compare",{"title":307,"path":355,"stem":356,"icon":196},"\u002Ftu-hoc\u002Fgeneric\u002Fcau-hoi-phong-van","2.tu-hoc\u002F4.generic\u002F4.cau-hoi-phong-van",{"title":358,"icon":359,"path":360,"stem":361,"children":362},"Nuxt 4","i-simple-icons-nuxt","\u002Ftu-hoc\u002Fnuxt-4","2.tu-hoc\u002F5.nuxt-4\u002Findex",[363,364,367,372,376,379],{"title":358,"path":360,"stem":361,"icon":359},{"title":173,"path":365,"stem":366,"icon":176},"\u002Ftu-hoc\u002Fnuxt-4\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F5.nuxt-4\u002F1.gioi-thieu-cai-dat",{"title":368,"path":369,"stem":370,"icon":371},"2. Routing và Rendering","\u002Ftu-hoc\u002Fnuxt-4\u002Frouting-rendering","2.tu-hoc\u002F5.nuxt-4\u002F2.routing-rendering","i-lucide-route",{"title":373,"path":374,"stem":375,"icon":91},"3. Data và Server","\u002Ftu-hoc\u002Fnuxt-4\u002Fdata-server","2.tu-hoc\u002F5.nuxt-4\u002F3.data-server",{"title":307,"path":377,"stem":378,"icon":196},"\u002Ftu-hoc\u002Fnuxt-4\u002Fcau-hoi-phong-van","2.tu-hoc\u002F5.nuxt-4\u002F4.cau-hoi-phong-van",{"title":380,"path":381,"stem":382,"icon":383},"5. Practical Todo App","\u002Ftu-hoc\u002Fnuxt-4\u002Fpractical-todo-app","2.tu-hoc\u002F5.nuxt-4\u002F5.practical-todo-app","i-lucide-check-square",{"title":385,"path":386,"stem":387,"children":388,"icon":390},"Tailwind CSS","\u002Ftu-hoc\u002Ftailwindcss","2.tu-hoc\u002F6.tailwindcss\u002Findex",[389,391,396,401,406,411,416],{"title":385,"path":386,"stem":387,"icon":390},"i-simple-icons-tailwindcss",{"title":392,"path":393,"stem":394,"icon":395},"1. Layout & Spacing","\u002Ftu-hoc\u002Ftailwindcss\u002Flayout-spacing","2.tu-hoc\u002F6.tailwindcss\u002F1.layout-spacing","i-lucide-layout",{"title":397,"path":398,"stem":399,"icon":400},"2. Typography & Colors","\u002Ftu-hoc\u002Ftailwindcss\u002Ftypography-colors","2.tu-hoc\u002F6.tailwindcss\u002F2.typography-colors","i-lucide-type",{"title":402,"path":403,"stem":404,"icon":405},"3. Interactive & Effects","\u002Ftu-hoc\u002Ftailwindcss\u002Finteractive-effects","2.tu-hoc\u002F6.tailwindcss\u002F3.interactive-effects","i-lucide-sparkles",{"title":407,"path":408,"stem":409,"icon":410},"4. Responsive & Dark Mode","\u002Ftu-hoc\u002Ftailwindcss\u002Fresponsive-darkmode","2.tu-hoc\u002F6.tailwindcss\u002F4.responsive-darkmode","i-lucide-monitor-smartphone",{"title":412,"path":413,"stem":414,"icon":415},"5. Customization & Theme","\u002Ftu-hoc\u002Ftailwindcss\u002Fcustomization","2.tu-hoc\u002F6.tailwindcss\u002F5.customization","i-lucide-settings-2",{"title":417,"path":418,"stem":419,"icon":181},"6. Practical Projects","\u002Ftu-hoc\u002Ftailwindcss\u002Fpractical-projects","2.tu-hoc\u002F6.tailwindcss\u002F6.practical-projects",{"id":421,"title":422,"body":423,"description":2715,"extension":2716,"links":2717,"meta":2718,"navigation":2719,"path":245,"seo":2720,"stem":246,"__hash__":2721},"docs\u002F2.tu-hoc\u002F1.database\u002F5.so-sanh.md","So sánh SQL Server vs PostgreSQL vs MySQL",{"type":424,"value":425,"toc":2696},"minimark",[426,441,446,615,619,737,741,746,875,879,1128,1132,1373,1377,1510,1514,1591,1595,1941,1945,2057,2079,2083,2267,2271,2357,2361,2482,2486,2536,2540,2624,2628,2681,2692],[427,428,431,432,436,437,440],"callout",{"color":429,"icon":430},"primary","i-lucide-info","Trang này tổng hợp khác biệt giữa 3 RDBMS để bạn ",[433,434,435],"strong",{},"chọn đúng cho dự án"," và ",[433,438,439],{},"chuyển đổi nhanh"," khi qua dự án dùng DB khác.",[442,443,445],"h2",{"id":444},"_1-khung-tổng-quát","1. Khung tổng quát",[447,448,449,468],"table",{},[450,451,452],"thead",{},[453,454,455,459,462,465],"tr",{},[456,457,458],"th",{},"Tiêu chí",[456,460,461],{},"SQL Server 2025",[456,463,464],{},"PostgreSQL 19",[456,466,467],{},"MySQL 9.7 \u002F 8.4",[469,470,471,488,504,520,535,550,566,582,599],"tbody",{},[453,472,473,479,482,485],{},[474,475,476],"td",{},[433,477,478],{},"License",[474,480,481],{},"Thương mại (Express free, 50GB)",[474,483,484],{},"PostgreSQL License (free)",[474,486,487],{},"GPL \u002F commercial",[453,489,490,495,498,501],{},[474,491,492],{},[433,493,494],{},"Owner",[474,496,497],{},"Microsoft",[474,499,500],{},"Cộng đồng (PGDG)",[474,502,503],{},"Oracle",[453,505,506,511,514,517],{},[474,507,508],{},[433,509,510],{},"Latest",[474,512,513],{},"17.x (11\u002F2025)",[474,515,516],{},"19 Beta (06\u002F2026)",[474,518,519],{},"9.7 LTS (04\u002F2026), 8.4 LTS",[453,521,522,527,530,533],{},[474,523,524],{},[433,525,526],{},"Cross-platform",[474,528,529],{},"Win + Linux + Docker",[474,531,532],{},"Tất cả",[474,534,532],{},[453,536,537,542,545,547],{},[474,538,539],{},[433,540,541],{},"Default storage",[474,543,544],{},"(page-based)",[474,546,544],{},[474,548,549],{},"InnoDB",[453,551,552,557,560,563],{},[474,553,554],{},[433,555,556],{},"Standard SQL compliance",[474,558,559],{},"Cao",[474,561,562],{},"Cao nhất",[474,564,565],{},"Vừa",[453,567,568,573,576,579],{},[474,569,570],{},[433,571,572],{},"Mã nguồn mở",[474,574,575],{},"❌",[474,577,578],{},"✅",[474,580,581],{},"✅ Community \u002F ❌ Enterprise",[453,583,584,589,592,597],{},[474,585,586],{},[433,587,588],{},"Compiler \u002F Engine",[474,590,591],{},"C++ native",[474,593,594],{},[433,595,596],{},"Go (TS 7-style rewrite PG 19)",[474,598,591],{},[453,600,601,606,609,612],{},[474,602,603],{},[433,604,605],{},"AI\u002FVector built-in",[474,607,608],{},"✅ VECTOR + DiskANN (2025)",[474,610,611],{},"✅ pgvector extension",[474,613,614],{},"❌ (HeatWave riêng)",[442,616,618],{"id":617},"_2-khi-nào-chọn-cái-nào","2. Khi nào chọn cái nào?",[620,621,622,667,705],"card-group",{},[623,624,626],"card",{"icon":91,"title":625},"SQL Server hợp khi…",[627,628,629,633,639,645,648,651,658,664],"ul",{},[630,631,632],"li",{},"Stack .NET \u002F Microsoft ecosystem.",[630,634,635,638],{},[433,636,637],{},"Cần AI\u002FVector built-in"," (VECTOR + DiskANN, RAG trong DB).",[630,640,641,644],{},[433,642,643],{},"Native RegEx + JSON"," trong T-SQL không cần CLR.",[630,646,647],{},"Banking, insurance VN (đã đầu tư SQL Server từ lâu).",[630,649,650],{},"Cần BI \u002F SSIS \u002F SSAS \u002F Power BI Report Server.",[630,652,653,654,657],{},"Express Edition ",[433,655,656],{},"50GB"," miễn phí — đủ cho project nhỏ.",[630,659,660,663],{},[433,661,662],{},"Copilot trong SSMS 22"," — NL → T-SQL.",[630,665,666],{},"On-prem Windows hoặc hybrid Azure Arc.",[623,668,670],{"icon":199,"title":669},"PostgreSQL hợp khi…",[627,671,672,675,678,684,690,693,696,699,702],{},[630,673,674],{},"Stack Node.js, Python, Go, modern web.",[630,676,677],{},"Open-source first, không lock vendor.",[630,679,680,683],{},[433,681,682],{},"SQL\u002FPGQ graph queries"," (PG 19) — graph trên table có sẵn.",[630,685,686,689],{},[433,687,688],{},"ON CONFLICT DO SELECT"," — atomic get-or-create (PG 19).",[630,691,692],{},"Cần JSONB nặng (CMS, event store).",[630,694,695],{},"Cần GIS (PostGIS).",[630,697,698],{},"Cần AI \u002F vector search (pgvector).",[630,700,701],{},"Cần extension system mạnh (pg_trgm, postgis, timescaledb…).",[630,703,704],{},"Startup \u002F scale-up cần linh hoạt, free hoàn toàn.",[623,706,708],{"icon":224,"title":707},"MySQL hợp khi…",[627,709,710,713,719,725,728,731,734],{},[630,711,712],{},"Stack LAMP, PHP\u002FLaravel, WordPress.",[630,714,715,718],{},[433,716,717],{},"Hypergraph Optimizer trong Community"," (9.7) — JOIN nhanh 2-5×.",[630,720,721,724],{},[433,722,723],{},"In-database JavaScript"," (9.7) — stored procedure bằng JS.",[630,726,727],{},"E-commerce nhẹ (Magento, WooCommerce).",[630,729,730],{},"Cần ecosystem hosting đa dạng nhất.",[630,732,733],{},"Team đã quen, dev nhanh.",[630,735,736],{},"Cần MySQL-compatible cloud (PlanetScale, RDS, Aurora).",[442,738,740],{"id":739},"_3-syntax-cheat-sheet-chuyển-đổi","3. Syntax — cheat sheet chuyển đổi",[742,743,745],"h3",{"id":744},"identifier-string","Identifier & string",[447,747,748,761],{},[450,749,750],{},[453,751,752,754,756,759],{},[456,753],{},[456,755,168],{},[456,757,758],{},"Postgres",[456,760,223],{},[469,762,763,787,810,828,857],{},[453,764,765,768,778,782],{},[474,766,767],{},"Quote identifier",[474,769,770,774,775],{},[771,772,773],"code",{},"[Name]"," hoặc ",[771,776,777],{},"\"Name\"",[474,779,780],{},[771,781,777],{},[474,783,784],{},[771,785,786],{},"`Name`",[453,788,789,792,801,806],{},[474,790,791],{},"String literal",[474,793,794,797,798],{},[771,795,796],{},"N'unicode'"," \u002F ",[771,799,800],{},"'ascii'",[474,802,803],{},[771,804,805],{},"'utf-8'",[474,807,808],{},[771,809,805],{},[453,811,812,815,823,826],{},[474,813,814],{},"Concat",[474,816,817,774,820],{},[771,818,819],{},"+",[771,821,822],{},"CONCAT()",[474,824,825],{},"`",[474,827],{},[453,829,830,833,842,850],{},[474,831,832],{},"Cast",[474,834,835,838,839],{},[771,836,837],{},"CAST(x AS INT)",", ",[771,840,841],{},"CONVERT(INT, x)",[474,843,844,838,847],{},[771,845,846],{},"x::INT",[771,848,849],{},"CAST(...)",[474,851,852,838,854],{},[771,853,849],{},[771,855,856],{},"CONVERT(x, UNSIGNED)",[453,858,859,862,870,873],{},[474,860,861],{},"Comment",[474,863,864,774,867],{},[771,865,866],{},"-- ",[771,868,869],{},"\u002F* *\u002F",[474,871,872],{},"giống",[474,874,872],{},[742,876,878],{"id":877},"data-type","Data type",[447,880,881,893],{},[450,882,883],{},[453,884,885,887,889,891],{},[456,886],{},[456,888,168],{},[456,890,758],{},[456,892,223],{},[469,894,895,919,938,958,981,1001,1020,1043,1063,1077,1096],{},[453,896,897,900,905,914],{},[474,898,899],{},"Unicode string",[474,901,902],{},[771,903,904],{},"NVARCHAR(n)",[474,906,907,797,910,913],{},[771,908,909],{},"TEXT",[771,911,912],{},"VARCHAR(n)"," (utf-8)",[474,915,916,918],{},[771,917,912],{}," CHARSET utf8mb4",[453,920,921,924,929,933],{},[474,922,923],{},"Long text",[474,925,926],{},[771,927,928],{},"NVARCHAR(MAX)",[474,930,931],{},[771,932,909],{},[474,934,935],{},[771,936,937],{},"LONGTEXT",[453,939,940,943,948,953],{},[474,941,942],{},"Boolean",[474,944,945],{},[771,946,947],{},"BIT",[474,949,950],{},[771,951,952],{},"BOOLEAN",[474,954,955],{},[771,956,957],{},"TINYINT(1)",[453,959,960,963,968,976],{},[474,961,962],{},"Auto-id",[474,964,965],{},[771,966,967],{},"INT IDENTITY",[474,969,970,797,973],{},[771,971,972],{},"BIGSERIAL",[771,974,975],{},"GENERATED AS IDENTITY",[474,977,978],{},[771,979,980],{},"BIGINT AUTO_INCREMENT",[453,982,983,986,991,996],{},[474,984,985],{},"Timestamp w\u002F tz",[474,987,988],{},[771,989,990],{},"DATETIMEOFFSET",[474,992,993],{},[771,994,995],{},"TIMESTAMPTZ",[474,997,998],{},[771,999,1000],{},"TIMESTAMP",[453,1002,1003,1006,1011,1015],{},[474,1004,1005],{},"Timestamp wo\u002F tz",[474,1007,1008],{},[771,1009,1010],{},"DATETIME2",[474,1012,1013],{},[771,1014,1000],{},[474,1016,1017],{},[771,1018,1019],{},"DATETIME",[453,1021,1022,1025,1030,1035],{},[474,1023,1024],{},"UUID",[474,1026,1027],{},[771,1028,1029],{},"UNIQUEIDENTIFIER",[474,1031,1032,1034],{},[771,1033,1024],{}," (built-in)",[474,1036,1037,774,1040],{},[771,1038,1039],{},"BINARY(16)",[771,1041,1042],{},"CHAR(36)",[453,1044,1045,1048,1053,1059],{},[474,1046,1047],{},"JSON",[474,1049,1050,1052],{},[771,1051,1047],{}," (2025, first-class native)",[474,1054,1055,1058],{},[771,1056,1057],{},"JSONB"," (recommended)",[474,1060,1061],{},[771,1062,1047],{},[453,1064,1065,1068,1071,1074],{},[474,1066,1067],{},"Array",[474,1069,1070],{},"❌ (XML hoặc JSON)",[474,1072,1073],{},"✅ Native",[474,1075,1076],{},"❌ (JSON thay)",[453,1078,1079,1082,1088,1094],{},[474,1080,1081],{},"Vector (AI)",[474,1083,1084,1087],{},[771,1085,1086],{},"VECTOR(n)"," (2025, native)",[474,1089,1090,1091],{},"Extension ",[771,1092,1093],{},"pgvector",[474,1095,575],{},[453,1097,1098,1101,1110,1121],{},[474,1099,1100],{},"RegEx",[474,1102,1103,838,1106,1109],{},[771,1104,1105],{},"REGEXP_LIKE",[771,1107,1108],{},"REGEXP_REPLACE","... (2025)",[474,1111,1112,838,1115,838,1118,1120],{},[771,1113,1114],{},"~",[771,1116,1117],{},"SIMILAR TO",[771,1119,1108],{},"...",[474,1122,1123,838,1126,1120],{},[771,1124,1125],{},"REGEXP",[771,1127,1108],{},[742,1129,1131],{"id":1130},"function-tương-đương","Function tương đương",[447,1133,1134,1147],{},[450,1135,1136],{},[453,1137,1138,1141,1143,1145],{},[456,1139,1140],{},"Mục đích",[456,1142,168],{},[456,1144,758],{},[456,1146,223],{},[469,1148,1149,1177,1197,1217,1239,1259,1281,1300,1325,1345],{},[453,1150,1151,1154,1162,1170],{},[474,1152,1153],{},"Now",[474,1155,1156,838,1159],{},[771,1157,1158],{},"SYSUTCDATETIME()",[771,1160,1161],{},"GETDATE()",[474,1163,1164,838,1167],{},[771,1165,1166],{},"NOW()",[771,1168,1169],{},"CURRENT_TIMESTAMP",[474,1171,1172,838,1174],{},[771,1173,1166],{},[771,1175,1176],{},"UTC_TIMESTAMP()",[453,1178,1179,1182,1187,1192],{},[474,1180,1181],{},"Add interval",[474,1183,1184],{},[771,1185,1186],{},"DATEADD(DAY, 7, d)",[474,1188,1189],{},[771,1190,1191],{},"d + INTERVAL '7 days'",[474,1193,1194],{},[771,1195,1196],{},"DATE_ADD(d, INTERVAL 7 DAY)",[453,1198,1199,1202,1207,1212],{},[474,1200,1201],{},"Diff",[474,1203,1204],{},[771,1205,1206],{},"DATEDIFF(DAY, a, b)",[474,1208,1209],{},[771,1210,1211],{},"b - a",[474,1213,1214],{},[771,1215,1216],{},"DATEDIFF(b, a)",[453,1218,1219,1222,1230,1235],{},[474,1220,1221],{},"Year",[474,1223,1224,838,1227],{},[771,1225,1226],{},"YEAR(d)",[771,1228,1229],{},"DATEPART(YEAR, d)",[474,1231,1232],{},[771,1233,1234],{},"EXTRACT(YEAR FROM d)",[474,1236,1237],{},[771,1238,1226],{},[453,1240,1241,1244,1249,1254],{},[474,1242,1243],{},"Format",[474,1245,1246],{},[771,1247,1248],{},"FORMAT(d, 'yyyy-MM-dd')",[474,1250,1251],{},[771,1252,1253],{},"TO_CHAR(d, 'YYYY-MM-DD')",[474,1255,1256],{},[771,1257,1258],{},"DATE_FORMAT(d, '%Y-%m-%d')",[453,1260,1261,1264,1269,1277],{},[474,1262,1263],{},"String length",[474,1265,1266],{},[771,1267,1268],{},"LEN(s)",[474,1270,1271,838,1274],{},[771,1272,1273],{},"LENGTH(s)",[771,1275,1276],{},"CHAR_LENGTH(s)",[474,1278,1279],{},[771,1280,1276],{},[453,1282,1283,1286,1291,1296],{},[474,1284,1285],{},"Substring",[474,1287,1288],{},[771,1289,1290],{},"SUBSTRING(s, 1, 3)",[474,1292,1293],{},[771,1294,1295],{},"SUBSTRING(s FROM 1 FOR 3)",[474,1297,1298],{},[771,1299,1290],{},[453,1301,1302,1305,1313,1318],{},[474,1303,1304],{},"NULL replace",[474,1306,1307,838,1310],{},[771,1308,1309],{},"ISNULL(x, 'default')",[771,1311,1312],{},"COALESCE",[474,1314,1315],{},[771,1316,1317],{},"COALESCE(x, 'default')",[474,1319,1320,838,1323],{},[771,1321,1322],{},"IFNULL(x, 'default')",[771,1324,1312],{},[453,1326,1327,1330,1335,1340],{},[474,1328,1329],{},"RegEx match",[474,1331,1332],{},[771,1333,1334],{},"REGEXP_LIKE(s, pattern)",[474,1336,1337],{},[771,1338,1339],{},"s ~ pattern",[474,1341,1342],{},[771,1343,1344],{},"s REGEXP pattern",[453,1346,1347,1350,1359,1368],{},[474,1348,1349],{},"UUID generate",[474,1351,1352,1355,1356],{},[771,1353,1354],{},"NEWID()"," (v4), ",[771,1357,1358],{},"NEWSEQUENTIALID()",[474,1360,1361,1364,1365],{},[771,1362,1363],{},"uuidv7()"," (PG 18+) \u002F ",[771,1366,1367],{},"gen_random_uuid()",[474,1369,1370],{},[771,1371,1372],{},"UUID()",[742,1374,1376],{"id":1375},"dml","DML",[447,1378,1379,1391],{},[450,1380,1381],{},[453,1382,1383,1385,1387,1389],{},[456,1384],{},[456,1386,168],{},[456,1388,758],{},[456,1390,223],{},[469,1392,1393,1415,1441,1471,1483,1498],{},[453,1394,1395,1398,1406,1411],{},[474,1396,1397],{},"LIMIT",[474,1399,1400,838,1403],{},[771,1401,1402],{},"TOP N",[771,1404,1405],{},"OFFSET..FETCH",[474,1407,1408],{},[771,1409,1410],{},"LIMIT N OFFSET M",[474,1412,1413],{},[771,1414,1410],{},[453,1416,1417,1420,1425,1436],{},[474,1418,1419],{},"UPSERT",[474,1421,1422],{},[771,1423,1424],{},"MERGE",[474,1426,1427,797,1430,1435],{},[771,1428,1429],{},"ON CONFLICT DO UPDATE",[433,1431,1432],{},[771,1433,1434],{},"DO SELECT"," (PG 19)",[474,1437,1438],{},[771,1439,1440],{},"ON DUPLICATE KEY UPDATE",[453,1442,1443,1446,1451,1466],{},[474,1444,1445],{},"Returning",[474,1447,1448],{},[771,1449,1450],{},"OUTPUT INSERTED.*",[474,1452,1453,797,1456,1465],{},[771,1454,1455],{},"RETURNING *",[433,1457,1458,1461,1462],{},[771,1459,1460],{},"OLD","\u002F",[771,1463,1464],{},"NEW"," (PG 18+)",[474,1467,1468],{},[771,1469,1470],{},"SELECT LAST_INSERT_ID()",[453,1472,1473,1476,1478,1480],{},[474,1474,1475],{},"FULL OUTER JOIN",[474,1477,578],{},[474,1479,578],{},[474,1481,1482],{},"❌ (UNION mô phỏng)",[453,1484,1485,1488,1490,1496],{},[474,1486,1487],{},"Graph query",[474,1489,575],{},[474,1491,1492,1493,1435],{},"✅ ",[433,1494,1495],{},"SQL\u002FPGQ",[474,1497,575],{},[453,1499,1500,1503,1505,1507],{},[474,1501,1502],{},"GROUP BY ALL",[474,1504,575],{},[474,1506,575],{},[474,1508,1509],{},"❌ (chỉ PG 19)",[742,1511,1513],{"id":1512},"updatedelete-với-join","Update\u002FDelete với JOIN",[1515,1516,1521],"pre",{"className":1517,"code":1518,"language":1519,"meta":1520,"style":1520},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- SQL Server\nUPDATE p SET p.cat_name = c.name\nFROM Products p JOIN Categories c ON c.Id = p.CatId;\n\n-- Postgres\nUPDATE products p SET cat_name = c.name\nFROM categories c WHERE c.id = p.cat_id;\n\n-- MySQL\nUPDATE products p JOIN categories c ON c.id = p.cat_id\nSET p.cat_name = c.name;\n","sql","",[771,1522,1523,1531,1537,1543,1550,1556,1562,1568,1573,1579,1585],{"__ignoreMap":1520},[1524,1525,1528],"span",{"class":1526,"line":1527},"line",1,[1524,1529,1530],{},"-- SQL Server\n",[1524,1532,1534],{"class":1526,"line":1533},2,[1524,1535,1536],{},"UPDATE p SET p.cat_name = c.name\n",[1524,1538,1540],{"class":1526,"line":1539},3,[1524,1541,1542],{},"FROM Products p JOIN Categories c ON c.Id = p.CatId;\n",[1524,1544,1546],{"class":1526,"line":1545},4,[1524,1547,1549],{"emptyLinePlaceholder":1548},true,"\n",[1524,1551,1553],{"class":1526,"line":1552},5,[1524,1554,1555],{},"-- Postgres\n",[1524,1557,1559],{"class":1526,"line":1558},6,[1524,1560,1561],{},"UPDATE products p SET cat_name = c.name\n",[1524,1563,1565],{"class":1526,"line":1564},7,[1524,1566,1567],{},"FROM categories c WHERE c.id = p.cat_id;\n",[1524,1569,1571],{"class":1526,"line":1570},8,[1524,1572,1549],{"emptyLinePlaceholder":1548},[1524,1574,1576],{"class":1526,"line":1575},9,[1524,1577,1578],{},"-- MySQL\n",[1524,1580,1582],{"class":1526,"line":1581},10,[1524,1583,1584],{},"UPDATE products p JOIN categories c ON c.id = p.cat_id\n",[1524,1586,1588],{"class":1526,"line":1587},11,[1524,1589,1590],{},"SET p.cat_name = c.name;\n",[442,1592,1594],{"id":1593},"_4-feature-comparison","4. Feature comparison",[447,1596,1597,1610],{},[450,1598,1599],{},[453,1600,1601,1604,1606,1608],{},[456,1602,1603],{},"Feature",[456,1605,168],{},[456,1607,758],{},[456,1609,223],{},[469,1611,1612,1626,1637,1649,1661,1673,1687,1701,1724,1735,1746,1760,1775,1787,1804,1825,1836,1849,1866,1881,1895,1911,1925],{},[453,1613,1614,1617,1620,1623],{},[474,1615,1616],{},"Window function",[474,1618,1619],{},"✅ Full",[474,1621,1622],{},"✅ Full (nhiều nhất)",[474,1624,1625],{},"✅ (8.0+)",[453,1627,1628,1631,1633,1635],{},[474,1629,1630],{},"CTE recursive",[474,1632,578],{},[474,1634,578],{},[474,1636,1625],{},[453,1638,1639,1642,1644,1646],{},[474,1640,1641],{},"GROUPING SETS \u002F ROLLUP \u002F CUBE",[474,1643,578],{},[474,1645,578],{},[474,1647,1648],{},"ROLLUP only",[453,1650,1651,1654,1657,1659],{},[474,1652,1653],{},"Materialized View",[474,1655,1656],{},"❌ (Indexed View)",[474,1658,578],{},[474,1660,575],{},[453,1662,1663,1666,1669,1671],{},[474,1664,1665],{},"Partial index",[474,1667,1668],{},"❌ (Filtered Index)",[474,1670,578],{},[474,1672,575],{},[453,1674,1675,1678,1681,1684],{},[474,1676,1677],{},"Functional index",[474,1679,1680],{},"Computed col PERSISTED",[474,1682,1683],{},"✅ Expression index",[474,1685,1686],{},"✅ (8.0.13+)",[453,1688,1689,1692,1695,1698],{},[474,1690,1691],{},"Native JSON path index",[474,1693,1694],{},"✅ (2025, JSON index)",[474,1696,1697],{},"✅ GIN",[474,1699,1700],{},"✅ (functional index)",[453,1702,1703,1706,1710,1718],{},[474,1704,1705],{},"Native UUID",[474,1707,1708],{},[771,1709,1029],{},[474,1711,1712,1714,1715,1717],{},[771,1713,1024],{}," + ",[771,1716,1363],{}," (18+)",[474,1719,1720,1461,1722],{},[771,1721,1039],{},[771,1723,1042],{},[453,1725,1726,1729,1731,1733],{},[474,1727,1728],{},"Array type",[474,1730,575],{},[474,1732,1073],{},[474,1734,575],{},[453,1736,1737,1740,1742,1744],{},[474,1738,1739],{},"Range type",[474,1741,575],{},[474,1743,578],{},[474,1745,575],{},[453,1747,1748,1751,1754,1757],{},[474,1749,1750],{},"Full-text search",[474,1752,1753],{},"✅ built-in",[474,1755,1756],{},"✅ tsvector + GIN",[474,1758,1759],{},"✅ built-in (InnoDB)",[453,1761,1762,1765,1771,1773],{},[474,1763,1764],{},"Vector search (AI)",[474,1766,1492,1767,1770],{},[433,1768,1769],{},"VECTOR + DiskANN"," (2025)",[474,1772,611],{},[474,1774,614],{},[453,1776,1777,1779,1781,1785],{},[474,1778,1487],{},[474,1780,575],{},[474,1782,1492,1783,1435],{},[433,1784,1495],{},[474,1786,575],{},[453,1788,1789,1792,1795,1802],{},[474,1790,1791],{},"Temporal table",[474,1793,1794],{},"✅ System-versioned",[474,1796,1797,1798,1801],{},"✅ (18+ constraints, ",[433,1799,1800],{},"19+ FOR PORTION OF",")",[474,1803,575],{},[453,1805,1806,1809,1812,1819],{},[474,1807,1808],{},"Native RegEx",[474,1810,1811],{},"✅ (2025, 6 functions)",[474,1813,1814,1815,1714,1817],{},"✅ POSIX ",[771,1816,1114],{},[771,1818,1117],{},[474,1820,1492,1821,838,1823],{},[771,1822,1125],{},[771,1824,1108],{},[453,1826,1827,1829,1831,1834],{},[474,1828,1424],{},[474,1830,578],{},[474,1832,1833],{},"✅ (15+)",[474,1835,575],{},[453,1837,1838,1841,1844,1847],{},[474,1839,1840],{},"Stored procedure",[474,1842,1843],{},"✅ T-SQL",[474,1845,1846],{},"✅ PL\u002FpgSQL (11+)",[474,1848,578],{},[453,1850,1851,1854,1857,1860],{},[474,1852,1853],{},"In-database JS\u002FPython",[474,1855,1856],{},"✅ R, Python (MLS)",[474,1858,1859],{},"✅ PL\u002FPython, PL\u002FPerl…",[474,1861,1492,1862,1865],{},[433,1863,1864],{},"JavaScript"," (9.7)",[453,1867,1868,1871,1874,1879],{},[474,1869,1870],{},"Online table rebuild",[474,1872,1873],{},"❌ (cần manual)",[474,1875,1492,1876,1435],{},[433,1877,1878],{},"REPACK CONCURRENTLY",[474,1880,575],{},[453,1882,1883,1886,1889,1893],{},[474,1884,1885],{},"Atomic get-or-create",[474,1887,1888],{},"❌ (MERGE workaround)",[474,1890,1492,1891,1435],{},[433,1892,688],{},[474,1894,575],{},[453,1896,1897,1900,1903,1908],{},[474,1898,1899],{},"Plan hints",[474,1901,1902],{},"✅ Query hints, Plan Guide",[474,1904,1492,1905,1435],{},[433,1906,1907],{},"pg_plan_advice",[474,1909,1910],{},"✅ Index hints, Optimizer hints",[453,1912,1913,1916,1918,1923],{},[474,1914,1915],{},"Parallel vacuum",[474,1917,575],{},[474,1919,1492,1920,1435],{},[433,1921,1922],{},"Parallel Autovacuum",[474,1924,575],{},[453,1926,1927,1930,1932,1935],{},[474,1928,1929],{},"Hypergraph Optimizer",[474,1931,575],{},[474,1933,1934],{},"❌ (PG có GEQO)",[474,1936,1492,1937,1940],{},[433,1938,1939],{},"DPhyp"," (9.7 Community!)",[442,1942,1944],{"id":1943},"_5-concurrency-transaction","5. Concurrency & transaction",[447,1946,1947,1960],{},[450,1948,1949],{},[453,1950,1951,1953,1955,1957],{},[456,1952],{},[456,1954,168],{},[456,1956,758],{},[456,1958,1959],{},"MySQL (InnoDB)",[469,1961,1962,1977,1995,2011,2026,2041],{},[453,1963,1964,1969,1972,1975],{},[474,1965,1966],{},[433,1967,1968],{},"MVCC",[474,1970,1971],{},"Optional (SNAPSHOT)",[474,1973,1974],{},"Native (default)",[474,1976,1974],{},[453,1978,1979,1984,1987,1990],{},[474,1980,1981],{},[433,1982,1983],{},"Default isolation",[474,1985,1986],{},"Read Committed (lock)",[474,1988,1989],{},"Read Committed (MVCC)",[474,1991,1992],{},[433,1993,1994],{},"Repeatable Read",[453,1996,1997,2002,2005,2008],{},[474,1998,1999],{},[433,2000,2001],{},"Phantom read trong RR",[474,2003,2004],{},"Có",[474,2006,2007],{},"Không (snapshot)",[474,2009,2010],{},"Không (gap lock)",[453,2012,2013,2018,2021,2024],{},[474,2014,2015],{},[433,2016,2017],{},"Serializable",[474,2019,2020],{},"Strict lock",[474,2022,2023],{},"SSI (optimistic)",[474,2025,2020],{},[453,2027,2028,2033,2036,2039],{},[474,2029,2030],{},[433,2031,2032],{},"Read block write",[474,2034,2035],{},"Mặc định có",[474,2037,2038],{},"Không (MVCC)",[474,2040,2038],{},[453,2042,2043,2048,2051,2054],{},[474,2044,2045],{},[433,2046,2047],{},"Lock granularity",[474,2049,2050],{},"Row \u002F page \u002F table",[474,2052,2053],{},"Row",[474,2055,2056],{},"Row + gap",[427,2058,2061,2073],{"color":2059,"icon":2060},"warning","i-lucide-star",[2062,2063,2064,2065,2068,2069],"p",{},"⭐ ",[433,2066,2067],{},"Câu PV cốt lõi:"," ",[2070,2071,2072],"em",{},"\"3 DB này khác nhau về isolation thế nào?\"",[2074,2075,2076],"blockquote",{},[2062,2077,2078],{},"\"SQL Server 2025 default Read Committed dùng lock — đọc block ghi (trừ khi bật RCSI). Azure SQL Hyperscale bật RCSI mặc định. Postgres và MySQL dùng MVCC — đọc không block ghi. Default isolation MySQL cao hơn — Repeatable Read (vs Read Committed của SQL Server và Postgres) vì lý do replication. Postgres Repeatable Read dùng snapshot toàn transaction → bao luôn phantom. MySQL Repeatable Read dùng gap lock cho mục đích tương tự. SQL Server 2025 Optimized Locking giảm lock escalation → row-level lock mượt hơn.\"",[442,2080,2082],{"id":2081},"_6-performance-scale","6. Performance & scale",[447,2084,2085,2097],{},[450,2086,2087],{},[453,2088,2089,2091,2093,2095],{},[456,2090],{},[456,2092,168],{},[456,2094,758],{},[456,2096,223],{},[469,2098,2099,2112,2126,2140,2154,2167,2179,2193,2207,2222,2237,2252],{},[453,2100,2101,2104,2107,2110],{},[474,2102,2103],{},"Vertical scale",[474,2105,2106],{},"Tốt",[474,2108,2109],{},"Rất tốt",[474,2111,2106],{},[453,2113,2114,2117,2120,2123],{},[474,2115,2116],{},"Horizontal scale (write)",[474,2118,2119],{},"Always On AG",[474,2121,2122],{},"Citus \u002F sharding app-level",[474,2124,2125],{},"Group Replication, Vitess",[453,2127,2128,2131,2134,2137],{},[474,2129,2130],{},"Read replica",[474,2132,2133],{},"Always On readable",[474,2135,2136],{},"Streaming replication",[474,2138,2139],{},"Source\u002FReplica",[453,2141,2142,2145,2148,2151],{},[474,2143,2144],{},"Connection pool built-in",[474,2146,2147],{},"❌ (cần dùng pool ngoài)",[474,2149,2150],{},"❌ (PgBouncer)",[474,2152,2153],{},"❌ (ProxySQL)",[453,2155,2156,2159,2162,2165],{},[474,2157,2158],{},"Columnstore",[474,2160,2161],{},"✅ Built-in",[474,2163,2164],{},"Extension (Citus, hydra)",[474,2166,575],{},[453,2168,2169,2172,2174,2177],{},[474,2170,2171],{},"Partition",[474,2173,578],{},[474,2175,2176],{},"✅ Declarative (10+)",[474,2178,578],{},[453,2180,2181,2184,2187,2190],{},[474,2182,2183],{},"Analytics performance",[474,2185,2186],{},"✅ Columnstore",[474,2188,2189],{},"OK + extension",[474,2191,2192],{},"OK",[453,2194,2195,2198,2201,2204],{},[474,2196,2197],{},"Realtime CDC",[474,2199,2200],{},"✅ (2025: Event Hubs\u002FKafka)",[474,2202,2203],{},"Logical replication, Debezium",[474,2205,2206],{},"Binlog, Debezium",[453,2208,2209,2214,2217,2220],{},[474,2210,2211],{},[433,2212,2213],{},"Optimized Locking",[474,2215,2216],{},"✅ (2025: no escalation, LAQ)",[474,2218,2219],{},"❌ (MVCC — không cần)",[474,2221,2219],{},[453,2223,2224,2229,2232,2234],{},[474,2225,2226],{},[433,2227,2228],{},"AI-augmented optimizer",[474,2230,2231],{},"✅ CE Feedback (2025)",[474,2233,575],{},[474,2235,2236],{},"✅ Hypergraph DPhyp (9.7)",[453,2238,2239,2243,2245,2250],{},[474,2240,2241],{},[433,2242,1870],{},[474,2244,575],{},[474,2246,1492,2247,2249],{},[433,2248,1878],{}," (19)",[474,2251,575],{},[453,2253,2254,2258,2260,2265],{},[474,2255,2256],{},[433,2257,1915],{},[474,2259,575],{},[474,2261,1492,2262,2249],{},[433,2263,2264],{},"Autovacuum parallel",[474,2266,575],{},[442,2268,2270],{"id":2269},"_7-tool-ecosystem","7. Tool ecosystem",[447,2272,2273,2285],{},[450,2274,2275],{},[453,2276,2277,2279,2281,2283],{},[456,2278],{},[456,2280,168],{},[456,2282,758],{},[456,2284,223],{},[469,2286,2287,2301,2315,2329,2343],{},[453,2288,2289,2292,2295,2298],{},[474,2290,2291],{},"Official GUI",[474,2293,2294],{},"SSMS, Azure Data Studio",[474,2296,2297],{},"pgAdmin",[474,2299,2300],{},"MySQL Workbench",[453,2302,2303,2306,2309,2312],{},[474,2304,2305],{},"Best 3rd-party",[474,2307,2308],{},"DataGrip, dbForge",[474,2310,2311],{},"DataGrip, DBeaver, TablePlus",[474,2313,2314],{},"DataGrip, DBeaver",[453,2316,2317,2320,2323,2326],{},[474,2318,2319],{},"CLI",[474,2321,2322],{},"sqlcmd",[474,2324,2325],{},"psql (rất mạnh)",[474,2327,2328],{},"mysql",[453,2330,2331,2334,2337,2340],{},[474,2332,2333],{},"Migration tool",[474,2335,2336],{},"Liquibase, Flyway, EF Core",[474,2338,2339],{},"Liquibase, Flyway, sqlx, Knex",[474,2341,2342],{},"Liquibase, Flyway, Knex",[453,2344,2345,2348,2351,2354],{},[474,2346,2347],{},"Backup tool",[474,2349,2350],{},"Built-in",[474,2352,2353],{},"pg_dump, pg_basebackup",[474,2355,2356],{},"mysqldump, XtraBackup",[442,2358,2360],{"id":2359},"_8-cloud-managed-offering","8. Cloud managed offering",[447,2362,2363,2376],{},[450,2364,2365],{},[453,2366,2367,2370,2372,2374],{},[456,2368,2369],{},"Provider",[456,2371,168],{},[456,2373,758],{},[456,2375,223],{},[469,2377,2378,2392,2406,2419,2433,2448,2465],{},[453,2379,2380,2383,2386,2389],{},[474,2381,2382],{},"AWS",[474,2384,2385],{},"RDS for SQL Server",[474,2387,2388],{},"RDS, Aurora PostgreSQL",[474,2390,2391],{},"RDS, Aurora MySQL",[453,2393,2394,2397,2400,2403],{},[474,2395,2396],{},"Azure",[474,2398,2399],{},"Azure SQL DB (PaaS), SQL MI",[474,2401,2402],{},"Database for PostgreSQL",[474,2404,2405],{},"Database for MySQL",[453,2407,2408,2411,2414,2417],{},[474,2409,2410],{},"Google Cloud",[474,2412,2413],{},"Cloud SQL",[474,2415,2416],{},"Cloud SQL, AlloyDB",[474,2418,2413],{},[453,2420,2421,2424,2427,2430],{},[474,2422,2423],{},"Modern",[474,2425,2426],{},"–",[474,2428,2429],{},"Supabase, Neon, Crunchy, Tembo",[474,2431,2432],{},"PlanetScale, Aiven, TiDB",[453,2434,2435,2440,2443,2446],{},[474,2436,2437],{},[433,2438,2439],{},"AI-native",[474,2441,2442],{},"Azure SQL Hyperscale + Copilot",[474,2444,2445],{},"Neon (serverless), Supabase (RAG)",[474,2447,2426],{},[453,2449,2450,2455,2461,2463],{},[474,2451,2452],{},[433,2453,2454],{},"Hybrid mgmt",[474,2456,2457,2460],{},[433,2458,2459],{},"Azure Arc"," (on-prem → cloud)",[474,2462,2426],{},[474,2464,2426],{},[453,2466,2467,2472,2478,2480],{},[474,2468,2469],{},[433,2470,2471],{},"Fabric-native",[474,2473,2474,2477],{},[433,2475,2476],{},"SQL Database in Fabric"," (SaaS)",[474,2479,2426],{},[474,2481,2426],{},[442,2483,2485],{"id":2484},"_9-pricing-rough","9. Pricing rough",[447,2487,2488,2500],{},[450,2489,2490],{},[453,2491,2492,2494,2497],{},[456,2493],{},[456,2495,2496],{},"Dev \u002F nhỏ",[456,2498,2499],{},"Production",[469,2501,2502,2516,2526],{},[453,2503,2504,2506,2513],{},[474,2505,168],{},[474,2507,2508,2509,2512],{},"Free (",[433,2510,2511],{},"Express 50GB",", Developer full-feature)",[474,2514,2515],{},"$$$ Standard\u002FEnterprise license",[453,2517,2518,2520,2523],{},[474,2519,758],{},[474,2521,2522],{},"Free",[474,2524,2525],{},"Free (chỉ trả hosting)",[453,2527,2528,2530,2533],{},[474,2529,223],{},[474,2531,2532],{},"Free Community",[474,2534,2535],{},"Free Community \u002F $$ Enterprise",[442,2537,2539],{"id":2538},"_10-câu-hỏi-pv-thường-gặp-3-db","10. Câu hỏi PV thường gặp — 3 DB",[427,2541,2542,2547],{"color":429,"icon":196},[2062,2543,2544],{},[433,2545,2546],{},"Câu PV trộn 3 DB hay được hỏi (cập nhật 2026):",[2548,2549,2550,2555,2560,2565,2570,2575,2580,2585,2591,2597,2603,2608,2613,2618],"ol",{},[630,2551,2552],{},[2070,2553,2554],{},"\"3 DB này khác isolation level mặc định thế nào?\"",[630,2556,2557],{},[2070,2558,2559],{},"\"Khác biệt JSONB Postgres, JSON MySQL, và native JSON SQL Server 2025?\"",[630,2561,2562],{},[2070,2563,2564],{},"\"Postgres MVCC khác InnoDB MVCC ở đâu? SQL Server có MVCC không?\"",[630,2566,2567],{},[2070,2568,2569],{},"\"UPSERT trong 3 DB? ON CONFLICT DO SELECT (PG 19) để làm gì?\"",[630,2571,2572],{},[2070,2573,2574],{},"\"DB nào dùng cho AI\u002FRAG? So sánh VECTOR (SQL Server) vs pgvector (Postgres)?\"",[630,2576,2577],{},[2070,2578,2579],{},"\"DB nào dùng cho banking core? Vì sao?\"",[630,2581,2582],{},[2070,2583,2584],{},"\"Schema\u002FDatabase hierarchy 3 DB khác nhau ra sao?\"",[630,2586,2587,2590],{},[2070,2588,2589],{},"\"DB nào có graph query native?\""," → PostgreSQL 19 (SQL\u002FPGQ).",[630,2592,2593,2596],{},[2070,2594,2595],{},"\"DB nào có array type native?\""," → Chỉ Postgres.",[630,2598,2599,2602],{},[2070,2600,2601],{},"\"3 DB này có Materialized View không?\""," → Chỉ Postgres native.",[630,2604,2605],{},[2070,2606,2607],{},"\"Hypergraph Optimizer (MySQL 9.7) khác gì optimizer thường?\"",[630,2609,2610],{},[2070,2611,2612],{},"\"SQL Server 2025 Optimized Locking giải quyết vấn đề gì?\"",[630,2614,2615],{},[2070,2616,2617],{},"\"REPACK CONCURRENTLY (PG 19) dùng thay VACUUM FULL khi nào?\"",[630,2619,2620,2623],{},[2070,2621,2622],{},"\"Express Edition 2025 khác gì bản cũ?\""," → 50GB (gấp 5×).",[442,2625,2627],{"id":2626},"_11-recommend-cho-fresher-junior","11. Recommend cho fresher \u002F junior",[427,2629,2632,2637,2675],{"color":2630,"icon":2631},"success","i-lucide-rocket",[2062,2633,2634],{},[433,2635,2636],{},"Học theo thứ tự nào nếu chưa biết SQL?",[2548,2638,2639,2644,2650],{},[630,2640,2641,2643],{},[433,2642,198],{}," trước — cú pháp chuẩn ANSI nhất, tài liệu tốt, free hoàn toàn. PG 19 có SQL\u002FPGQ, DO SELECT, REPACK — feature đầy đủ nhất trong các RDBMS open-source.",[630,2645,2646,2647,2649],{},"Sau đó ",[433,2648,223],{}," — nhẹ hơn, đơn giản hơn. Đọc hiểu được gap lock, AUTO_INCREMENT, ON DUPLICATE KEY là đủ cho大部分 job PHP\u002Fweb.",[630,2651,2652,2653,2655,2656,838,2659,838,2662,838,2665,838,2667,2670,2671,2674],{},"Cuối cùng ",[433,2654,168],{}," nếu công việc cần — T-SQL có khá nhiều đặc thù (",[771,2657,2658],{},"[]",[771,2660,2661],{},"N'...'",[771,2663,2664],{},"IDENTITY",[771,2666,1424],{},[771,2668,2669],{},"OUTPUT",", batch ",[771,2672,2673],{},"GO","). SQL Server 2025 thêm VECTOR, native JSON, RegEx, Copilot — bạn sẽ có lợi thế nếu biết các tính năng này.",[2062,2676,2677,2680],{},[433,2678,2679],{},"Một cách khác:"," học theo công việc — nếu nhận job .NET banking thì học SQL Server trước. Nếu startup Node.js thì PostgreSQL. Nếu WordPress\u002FPHP thì MySQL.",[427,2682,2684,2685,2688,2689,2691],{"color":429,"icon":2683},"i-lucide-arrow-right","Đó là kết thúc section Database. Quay lại ",[2686,2687,154],"a",{"href":156}," để xem chủ đề tiếp theo, hoặc ",[2686,2690,5],{"href":7}," để ôn luyện riêng cho fresher .NET.",[2693,2694,2695],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1520,"searchDepth":1533,"depth":1533,"links":2697},[2698,2699,2700,2707,2708,2709,2710,2711,2712,2713,2714],{"id":444,"depth":1533,"text":445},{"id":617,"depth":1533,"text":618},{"id":739,"depth":1533,"text":740,"children":2701},[2702,2703,2704,2705,2706],{"id":744,"depth":1539,"text":745},{"id":877,"depth":1539,"text":878},{"id":1130,"depth":1539,"text":1131},{"id":1375,"depth":1539,"text":1376},{"id":1512,"depth":1539,"text":1513},{"id":1593,"depth":1533,"text":1594},{"id":1943,"depth":1533,"text":1944},{"id":2081,"depth":1533,"text":2082},{"id":2269,"depth":1533,"text":2270},{"id":2359,"depth":1533,"text":2360},{"id":2484,"depth":1533,"text":2485},{"id":2538,"depth":1533,"text":2539},{"id":2626,"depth":1533,"text":2627},"So sánh chi tiết 3 RDBMS phổ biến — feature, performance, use case, syntax difference. Bảng tham chiếu cuối khi đã học cả 3.","md",null,{},{"title":244,"icon":247},{"title":422,"description":2715},"13_y_PYhtPs23BhKh1qJcXiUYWdejEaVxJUwQ9ueLnU",[2723,2725],{"title":193,"path":241,"stem":242,"description":2724,"icon":196,"children":-1},"65+ câu hỏi phỏng vấn MySQL cho dev backend \u002F fullstack — InnoDB, gap lock, replication, optimizer, MySQL 8.4 & 9.7 LTS.",{"title":249,"path":250,"stem":251,"description":2726,"icon":254,"children":-1},"Học Supabase toàn diện — Database, Auth, Storage, Realtime, Edge Functions, AI\u002FVector. Tài liệu tham khảo từ supabase.com\u002Fdocs.",1783490357085]