Loại trong MySQL giải thích là gì?
Từ khóa EXPLAIN được sử dụng để lấy thông tin về cách cơ sở dữ liệu SQL của chúng tôi thực hiện các truy vấn trong MySQL. Nó đồng nghĩa với câu lệnh DESCRIBE. Trong thực tế, từ khóa MÔ TẢ cung cấp thông tin cấu trúc bảng, trong khi từ khóa GIẢI THÍCH cung cấp kế hoạch thực hiện truy vấn. Nó là một công cụ mạnh mẽ để hiểu và tối ưu hóa các truy vấn trong MySQL, nhưng các nhà phát triển rất hiếm khi sử dụng nó Show
Nó có thể hoạt động với các truy vấn INSERT, SELECT, DELETE, UPDATE và REPLACE. Từ MySQL 8. 0. 19 trở lên, nó cũng có thể hoạt động với các câu lệnh TABLE. Khi chúng tôi sử dụng từ khóa này trong các truy vấn, nó sẽ xử lý câu lệnh và cung cấp thông tin về từng bước trong kế hoạch thực hiện, chẳng hạn như cách nối các bảng, thứ tự của bảng, phân vùng ước tính, v.v. Nó trả về một hoặc nhiều hàng giải thích từng phần của kế hoạch thực hiện và thứ tự thực hiện Hãy để chúng tôi hiểu nó với sự giúp đỡ của một ví dụ Ví dụGiả sử chúng ta có một bảng tên là "student_info" và "orders" trong cơ sở dữ liệu mẫu chứa dữ liệu sau Nếu chúng ta muốn hiển thị kế hoạch thực hiện của câu lệnh SELECT, chúng ta có thể sử dụng truy vấn như bên dưới đầu ra Truy vấn này tạo ra thông tin sau Đôi khi chúng tôi không muốn quét toàn bộ bảng. Trong trường hợp đó, chúng ta cần sử dụng INDEX để xem thông tin dựa trên một điều kiện cụ thể. Thực hiện câu lệnh dưới đây để tạo chỉ mục trong bảng student_info Nếu chỉ mục được tạo thành công, nó sẽ tạo ra đầu ra bên dưới Bây giờ, hãy thực hiện truy vấn sau để tránh quét toàn bộ bảng trong cơ sở dữ liệu Nó sẽ tạo ra đầu ra như hình ảnh bên dưới đầu ra Sau khi thực hiện ta sẽ được kết quả như hình bên dưới Ở kết quả trên, chúng ta có thể thấy rằng select_type ĐƠN GIẢN cho cả hai bảng. Cả hai bảng đều tuân theo mối quan hệ một-nhiều. Khóa chính của bảng student_info được sử dụng làm khóa ngoại cho bảng đơn hàng. Do đó, giá trị có thể_keys cho hàng thứ hai là order_id. Giá trị được lọc ở hàng đầu tiên là 12. 50% cho bảng student_info vì 'Barack' là mục thứ tư của bảng này. Giá trị được lọc ở hàng thứ hai là 100% cho bảng đơn hàng. Đó là bởi vì tất cả các giá trị của bảng đơn đặt hàng phải được kiểm tra để lấy dữ liệu GIẢI THÍCH Từ khóa trong Truy vấn CHỌN với Toán tử UNION ALLUNION ALL là toán tử trả về tất cả các giá trị cột phù hợp với các giá trị trùng lặp từ các bảng có liên quan trong khi sử dụng truy vấn SELECT. Câu lệnh dưới đây hiển thị đầu ra EXPLAIN bằng cách sử dụng toán tử UNION ALL giữa bảng student_info và bảng đơn đặt hàng đầu ra Nó sẽ tạo ra kết quả bên dưới, nơi chúng ta có thể thấy rằng giá trị của select_type là UNION cho hàng thứ hai và giá trị của cột Extra là chỉ mục MySQL GIẢI THÍCH Hạn chế từ khóaSau đây là những hạn chế phổ biến nhất của từ khóa EXPLAIN trong MySQL
PHÂN TÍCH GIẢI THÍCH MySQLNó là một công cụ lập hồ sơ cho các truy vấn hiển thị thông tin về nơi MySQL dành thời gian để thực hiện truy vấn và tại sao. Nó sẽ lập kế hoạch cho truy vấn, thiết bị và thực hiện nó trong khi đếm các hàng và đo thời gian dành cho các điểm khác nhau trong kế hoạch thực hiện. Khi thực hiện xong, nó sẽ in kế hoạch và phép đo thay vì kết quả truy vấn EXPLAIN 是什么 MySQL 提供了一个 5 命令, 它可以对 6 语句进行分析, 并输出 6 执行的详细信息, 以供开发人员针对性优化EXPLAIN 结果中的type字段
system > const > eq_ref > ref > range > index > ALL 复制代码1扫描方式由快到慢
1. hệ thống上例中,从系统库mysql的系统标proxies_priv里查询数据,这里的数据在Mysql服务启动时候已经加载在内存中,不需要进行磁盘IO。 官方文档中的解释: 22. hăng sô模拟数据
Explain分析结果上例中id是主键(primary key),连接部分是常量1,通过索引一次就能找到,速度非常快 场景:
3. eq_ref模拟数据________số 8Explain分析结果上例中对于前表 6表中的每一行(row),对应后 7表只有一行被扫描,这类扫描的速度也非常的快场景:
4. giới thiệu模拟数据
7Explain分析结果
由于后表使用了 4,对于前表 6表的每一行(row),后表 7表可能有多于一行的数据被扫描
当id改为普通非唯一索引后,常量的连接查询,也由const降级为了ref,因为非唯一索引所以有多于一行的数据被可能被扫描 7每一次匹配可能有多行数据返回,虽然它比eq_ref要慢,但它仍然是一个很快的join类型场景:
5. phạm vi模拟数据 2Explain分析结果
range比较好理解,它是索引上的范围查询,它会在索引上扫码特定范围内的值 6. mục lục
index类型,需要扫描索引上的全部数据,它仅比全表扫描快一点 7. TẤT CẢ CÁC模拟数据 3Explain分析结果如果id上不建索引,则全表扫描 总结
MySQL là gì và các loại của nó?MySQL hỗ trợ rất nhiều loại dữ liệu tiêu chuẩn SQL trong các danh mục khác nhau. Nó sử dụng nhiều loại dữ liệu khác nhau có thể được chia thành các loại sau. số, ngày và giờ, kiểu chuỗi, kiểu không gian và kiểu dữ liệu JSON .
loại chọn trong MySQL là gì?Giá trị select_type cho các câu lệnh không phải SELECT hiển thị loại câu lệnh cho các bảng bị ảnh hưởng . Ví dụ: select_type là DELETE cho câu lệnh DELETE. bảng (tên JSON. table_name ) Tên của bảng mà hàng đầu ra đề cập đến.
Làm cách nào để tìm kiểu dữ liệu trong MySQL?Bạn có thể lấy kiểu dữ liệu cột của bảng MySQL với sự trợ giúp của “information_schema. cột". CHỌN DATA_TYPE từ INFORMATION_SCHEMA. COLUMNS trong đó table_schema = 'yourDatabaseName' và table_name = 'yourTableName' .
Giải thích trong SQL là gì?Trong SQL, từ khóa EXPLAIN cung cấp mô tả về cách các truy vấn SQL được cơ sở dữ liệu thực thi . Những mô tả này bao gồm nhật ký trình tối ưu hóa, cách các bảng được nối và theo thứ tự, v.v. Do đó, nó sẽ là một công cụ hữu ích trong việc tối ưu hóa truy vấn và biết từng bước thực hiện chi tiết của nó. |