Thứ Hai, 12 tháng 9, 2022

MySql: Có nên sử Index? Khi nào thì nên sử dụng Index?

Với tiêu đề trên bạn nào không làm việc với MySQL nhiều sẽ thấy nực cười. Tất nhiên là nên sử dụng index rồi, test với một số dòng nhất định thì thấy lý thuyết mình học được trên trường đúng quá. Ngay cả mình cũng vậy bao nhiêu năm lúc nào cũng đinh ninh là cứ oánh index là khi select kiểu gì cũng nhanh hơn. Nhưng gần đây website của mình sinh ra một table tới 60 triệu dòng, khá là lớn, thấy hệ thống châm quá nên cặm cụi debug xem thế nào, bắt đầu từ MySQL, explain xem mấy câu query chạy chậm quá, thế là lên hỏi pác google rồi thấy sự thực đau lòng, select chậm một phần là do mình oánh index híc. Nếu bạn cứ thử test với table nào của mình có nhiều dòng một chút sẽ thấy ngay. Lý do là ở đâu, nếu bạn oánh index 1 column, nhưng số giá trị unique trong column đó quá thấp thì bạn không nên dùng index đối với trường hợp này. bạn có thể tính điều này qua công thức

Độ hiệu quả = tổng số dòng trong tables) / (tổng số dòng unique trong column) 

=1 Quá tốt, sự khác nhau của mỗi dòng là rất nhiều bà BTree hoạt động rất tốt, bạn nên dùng index

+———-+

| count(*) |
+----------+
| 817666 |
+----------+
1 row in set (0.63 sec)

+--------------------------+
| count(distinct username) |
+--------------------------+
| 817666 |
+--------------------------+
1 row in set (1.63 sec)

 

Nhưng nếu trong trường hợp tổng giá trị distinct của bạn quá ít so với số dòng của table giống vd dưới thì bạn không nên dùng index trong trường hợp này

+---------------------+
| count(distinct age) |
+---------------------+
| 83 |
+---------------------+
1 row in set (0.63 sec)

Chỉ có 83 sự khác biệt trong column trên => theo công thức trên Độ hiệu quả = 0.000101508 => gần như bằng 0 => nếu dùng index sẽ chậm hơn là quét toàn table rất nhiều => không nên dùng index trong trường hợp này
=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master