����λ�ã���ҳ > �����̳� > �̳� > count(*)��count(1)�ĸ����죿���Ա��ʣ�ͨ��������ʮ������MySQL����������
һ�������������Count(*)��Count(1)�ģ� ��������û�����𣬲�Ҫ���� count() ����ȫ���ֶΣ��� count(1) ���ᡣ���� count() ������������ MySQL ���߻���ô���� ���Ժ���ȷ�ظ������� count() �� count(1) ��һ���ģ�����ȷ���������
��������û�����𣬲�Ҫ���� count( ) ����ȫ���ֶΣ��� count(1) ���ᡣ���� count( ) ������������ MySQL ���߻���ô����
���Ժ���ȷ�ظ������� count( ) �� count(1) ��һ���ģ�����ȷ��������� count(�ֶ�)������� count() ���Ǿ�����ֶΣ���ô MySQL ���ж�ij�м�¼�ж�Ӧ�ֶ��Ƿ�Ϊ null�����Ϊ null �Ͳ������ͳ���ˡ���� count(�ֶ�) �Ľ�����ܻ�С�� count( ) �� count(1)��
���⣬ֱ��ִ�� select (*) from t1; ʱ��Ҳ�������õ������ģ�����һ����ȫ��ɨ�裬Ҳ����ɨ��ij������ B+ ����Ҷ�ӽڵ㣬�Ӷ��õ�����������Ϊ������ʲô�����������������Ǹ���������ʵ����������Ҷ�ӽڵ��������һ���ģ�ֻ�����ֶ�����һ����������������ȫ���ֶΣ�����������ֻ���˶���������ֶ� + �����ֶΣ�����ͨ�����������Ǹ�ռ�ÿռ�ģ���˱�������Ҳ����죬���Ǽ�¼������һ���ġ�
���Ô�������ֻ���ڸ�����������ಿ�ֵ����ϣ��������ܱ��Ż������仰˵����ʹ�ø�������ʱ����ѯ������Ӧ�ô�������������п�ʼ�����������������
���Ǵ���һ���򵥵�ʾ����������Ϊ employees ���������ϴ���һ���������������ṹ���£�
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
age INT,
department VARCHAR(50),
INDEX idx_name_age (last_name, first_name, age)
);
�����������Dz���һЩʵ������
INSERT INTO employees (first_name, last_name, age, department) VALUES
('John', 'Doe', 30, 'HR'),
('Jane', 'Doe', 25, 'IT'),
('Mary', 'Smith', 35, 'Finance'),
('Michael', 'Johnson', 40, 'IT'),
('Emily', 'Davis', 29, 'HR');
SELECT * FROM employees WHERE last_name = 'Doe' AND first_name = 'Jane' AND age=25;
SELECT * FROM employees WHERE first_name = 'Jane' AND last_name = 'Doe' AND age=30;
SELECT * FROM employees WHERE age=30 AND last_name = 'Doe' AND first_name = 'Jane';
����������Щ��ѯ��MySQL��ʹ��idx_name_age�����������ܹ�����������SQL��������������Where����˳��û�й�ϵ
+----+-------------+-----------+-------+---------------+---------+---------+------+-------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+-------+---------------+---------+---------+------+-------+-------------+
| 1 | SIMPLE | employees | range | idx_name_age | idx_name_age | 100 | NULL | 2 | Using where |
+----+-------------+-----------+-------+---------------+---------+---------+------+-------+-------------+
�����ִ�мƻ��У����ǿ���type��range��˵��MySQL����ʹ��idx_name_age����������ֻ����˴�Լ2�����ݡ�
�������last_nameȥ���أ�
SELECT * FROM employees WHERE first_name = 'Jane' AND age = 25;
���������ѯ��MySQL����ʹ�ø�������idx_name_age����Ϊ��û�д���������last_name��ʼ��
ͨ��Explainִ�мƻ����鿴����ִ�����
+----+-------------+-----------+-------+---------------+------+---------+------+-------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+-------+---------------+------+---------+------+-------+-------------+
| 1 | SIMPLE | employees | ALL | NULL | NULL | NULL | NULL | 5 | Using where |
+----+-------------+-----------+-------+---------------+------+---------+------+-------+-------------+
�����ִ�мƻ��У����ǿ���type��ALL������ζ��MySQLû��ʹ���κ����������ǽ�����ȫ��ɨ�裬����Ч�ʽϵ͡�
����������һ�ݰ������д��ˢ��ʼǣ�һ���Ӵ�ͨ���ҵ��ζ�����������Ô��û��ô�ѡ����Ǵ���д�ģ� 7701ҳ��BAT����д��ˢ��ʼǣ�����offer�õ�����
������Կ�������ν������ǰ׺Ô��ġ����󡱣�������ָwhere�����е�last_nameһ��Ҫ������ߣ�����ָwhere������һ��Ҫ������������������������ֶΣ��������Ƕ��塰last_name, first_name, age������������SQL��
INDEX idx_name_age (last_name, first_name, age)
����last_name�ֶ�������ߵ��ֶΣ���������Ҫ��idx_name_age��������ôSQLһ��Ҫ����last_name�ֶε�����������ǡ����󡱵���˼��
�����ǶԾ��������е�����������������񲢷�������ͬ�У�ֻ����ͬһ���Ͻ���д��ʱ�Ż�������������
�������������±��ṹ�����ݣ�
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
age INT,
department VARCHAR(50)
);
�������A������ij���ض�Ա������Ϣ��
-- ����A
START TRANSACTION;
UPDATE employees SET age = 31 WHERE last_name = 'Doe';
����������У������ᱻ����last_name = 'Doe'����Ӧ�����ϣ���John��Jane���������ʱ����B���Ը���ͬһ�У�
-- ����B
START TRANSACTION;
UPDATE employees SET age = 29 WHERE last_name = 'Doe';
����B�ᱻ������ֱ������A�ύ��ع�,��Ϊ����A������B�ӵĶ�����������Ҳ�б���������������ȷ�������ݵ�һ���ԡ�
����������ijһ�У���GAP����������ǰ��ļ�϶��ע��ֻ����ǰ��ļ�϶������ܻ����DZ������һ��ǰ���м�϶�������һ�к���ļ�϶������
��Ȼ�����ˣ�ֻ�������ǽ�����һ������PAGE_NEW_SUPREMUM�ļ�¼��˵�����������ΪPAGE_NEW_SUPREMUM��¼��InnoDBĬ�ϵģ����̶���Ϊ���һ����¼�����ֻҪ��סPAGE_NEW_SUPREMUMǰ��ļ�϶�����൱����ס����������������һ�к���ļ�϶��
�ٽ�����������GAP���Ľ�ϣ�����������������Լ���֮��Ŀ�϶��������ȷ����һ����Χ�ڵIJ�ѯ�У�������ֹ�˻ö������ܱ���������
����ʹ��֮ǰ�����ӣ���������ִ�������²���:
-- ����D
START TRANSACTION;
SELECT * FROM employees WHERE last_name >= 'D' FOR UPDATE;
�ڴ˲�ѯ�У�MySQL�������last_nameΪ'D'�������м���������ͬʱ��'D'֮ǰ�Ŀ�϶����GAP�����������Է�ֹ�ڸ÷�Χ�ڲ����µ��С�
OCRʶ����������һЩ����ͻ��ң��������ݲ�����������Ȼʶ���Ǻ����룬���ҽ������ҵ���������֪ʶ��������ͼƬ���ܴ�������ݡ�
��νMVCC���Ƕ�汾�������ƣ�MySQLΪ��ʵ�ֿ��ظ���������뼶�𣬶���Ϊ�˲�������������ʵ�ֿ��ظ��������Բ���MVCC������ʵ�֡�
ReadView����ȡ��ͼ�� ��
ReadView
������ͼ��¼�˵�ǰ�ɼ������а汾��������Щ�����ǻ�Ծ�ģ���Щ�����Ѿ��ύ��
����ID ��
ReadView
�У����¼��ǰ�����ID����С����ID���������ID��
�ɼ��Թ��� ��
ReadView
�е��������ID���������ĸ��ĶԵ�ǰ���񲻿ɼ���
ReadView
�еĻ�Ծ�����������ĸ��IJ��ɼ�����Ϊ�������ڽ����С�
ReadView
�е���С����ID��������ĸ����ǿɼ��ģ���Ϊ���Ѿ��ύ��
���� ReadView ��
ReadView
�����������ǰ�����ID����Ծ�����ID�Լ�������С����ID��
��ȡ���� ��
ReadView
�е���Ϣ����ȷ����Щ�汾�������ǿɼ��ġ�
�������� ��
MVCC������������ڲ����ű˴˵������ͬʱ���в������⼫�����������ݿ�IJ������ܡ�ͨ��ά�����ݵĶ���汾��MVCC��֤�����ݵ�һ���Ժ͸����ԣ�ͬʱ���������ľ�����
����������һ�ݰ������д��ˢ��ʼǣ�һ���Ӵ�ͨ���ҵ��ζ�����������Ô��û��ô�ѡ����Ǵ���д�ģ� 7701ҳ��BAT����д��ˢ��ʼǣ�����offer�õ�����
Online DDL ��ָ�ڲ�Ӱ�����ݿ���������£��޸����ݿ���Ľṹ��ͨ�׵�˵���������ǿ��������ݿ�����������ͬʱ���Ա����е��������������С��޸��ֶ����͡����������ȣ�������Ҫͣ��ά����
���DDL��������������һ���ֶΣ��������¼�������
MySQL ���Ȼ�� DDL �����н�����ȷ���﷨��ȷ�����磺
ALTER TABLE users ADD COLUMN age INT;
MySQL �����
users
�Ƿ���ڣ�������
age
�ֶ��Ƿ������е��ֶγ�ͻ�������ֶ����ظ��������������Ƿ�֧�ֵȡ�
�ڽ����κα��ṹ���֮ǰ��MySQL ��Ա���һ��Ԫ��������MDL����Ԫ�������������Ƿ�ֹ�ڱ���ṹ��ͬʱ������ DDL �����Ա������޸ģ���֤���ṹһ���ԡ�
��� ��Ԫ�����������ڳ�����װ����ʱ����ֹ������Ҳ��ͬʱ���Ļ���λ�ã�������ҡ�
������ִ��
ALTER TABLE
���ʱ��MySQL �ᴴ��һ��
��ʱ��
�������ʱ�������б���һ������Ʒ�����һᰴ�����ǵ�Ҫ�������µ��ֶΡ�
age
��
��� ��������л�������ʱ�����ڲֿ���һ���µĻ���ģ�ͣ�������ͬ����Ʒ��ͬʱ�����µ���Ʒ�������
�� MySQL ��������ݸ��ƺ����ὫÔ������ʱ�������滻����ʱ����ʱ���������ʽ�ı������������ֶΡ�
��� ������ֿ�����»��ܴ�ú󣬰���������У�ͬʱ�滻���ɻ��ܡ��˿ͼ�����������������̡�
Ôʼ�ı����±��滻��MySQL ���Զ�ɾ���ɱ���Ԫ���ݣ��ͷſռ䡣��һ���ں�̨��ɣ���Ӱ�����ݿ������������
�����в�����ɺ�MySQL ���ͷ�Ԫ���������������� DDL �� DML �����������С�
ע�� �����ַ����� ��ʹ�� Online DDL ������£����ܵ��´��������ݸ��Ʋ�����������������Ӱ�죬�����DZ��������ϴ�ʱ��
�� MySQL �У���������߲�ѯЧ�ʵĹؼ����ߣ�����ʱ���ܻ��������� ʧЧ ����������²�ѯ���ܴ���½����������ͨ�����ѯ����д�����������͵�ѡ���Լ����ݿ���Ż������йء������Ǽ��ֳ����ᵼ������ʧЧ�ij�����
LIKE
ʱͨ�������ǰ��
�����
LIKE
����У�ͨ���
%
�����ַ����Ŀ�ͷ���ᵼ������ʧЧ����Ϊ����������£�MySQL �޷�ͨ���������ٶ�λ�����������ļ�¼������Ҫɨ�����м�¼��
SELECT * FROM users WHERE name LIKE '%abc'; -- ����ʧЧ
����д����ʹ�� MySQL ɨ��ȫ���������д��
LIKE 'abc%'
��������Ȼ��Ч��
��� �����������һ����ļ��в���������"abc"��ͷ���ļ����������ֱ���ҵ���Ӧ�IJ��֣�������Dz������ְ���"abc"���ļ�����͵ÿ�ÿ���ļ�����
����ѯ�����е��ֶ������������ֶε����Ͳ�һ��ʱ��MySQL ���ܲ���ʹ�������������ȶ����ݽ�������ת����������ת���ᵼ���޷���Ч����������
����
id
��һ�������ֶΣ�
SELECT * FROM users WHERE id = '123'; -- ����ʧЧ
�����
'123'
���ַ�����MySQL �������ʽת�����������ʧЧ��
����ڲ�ѯ�ж������ֶ�ʹ���˺��������������MySQL ����ͨ����������ѯ����������ʧЧ��
SELECT * FROM users WHERE YEAR(created_at) = 2023; -- ����ʧЧ
����
YEAR(created_at)
�Ƕ�
created_at
�ֶν����˺������������ MySQL �޷�ֱ��ʹ���������в��ҡ�
��� ����������밴ij�ֹ������е��б��в������ݣ�������Ҫ�ȸı�������ʽ�����ҵ�������Ч���½���
OR
�ؼ���
��
OR
�����е�ijһ��û������ʱ��������ѯ����������ʧЧ��
SELECT * FROM users WHERE id = 1 OR name = 'Alice'; -- ����ʧЧ
����
id
������������
name
��û����������ô�����ѯ�Ͳ�������������MySQL ��Ҫ����ȫ��ɨ�衣
�Ż���ʽ ��Ϊ
name
�ֶε����������������߸�д��ѯ�߼�������OR
���µ�����ʧЧ��
!=
��
<>
)
ʹ�ò����ڲ�������
!=
��
<>
��ʱ��MySQL ������Чʹ���������ᵼ��ȫ��ɨ�衣
SELECT * FROM users WHERE age != 30; -- ����ʧЧ
�����ѯͨ���ᵼ������ʧЧ����Ϊ MySQL �޷�ͨ��������λ��������
!=
����
>
,
<
,
BETWEEN
) �����
�ڸ����������������������У�����һ���ֶ�ʹ���˷�Χ��ѯʱ���������ֶε��������ܻ�ʧЧ��
����������һ����������
(age, name)
�����²�ѯ��
SELECT * FROM users WHERE age > 30 AND name = 'Alice'; -- `name` ����ʧЧ
����������£�����
age
ʹ���˷�Χ��ѯ��
name
�е�������ʧЧ��MySQL �޷�ͨ����������ֱ�Ӳ��ҡ�
IS NULL
��
IS NOT NULL
����������ʹ��
IS NULL
��
IS NOT NULL
����ʱ MySQL ���ܲ��������������������ڴ������ݴ���
NULL
ֵ������£�MySQL ����Ϊ������ʹ�ò����㡣
SELECT * FROM users WHERE name IS NOT NULL; -- ��������ʧЧ
NOT IN
��
NOT EXISTS
ʹ��
NOT IN
��
NOT EXISTS
Ҳ���ܻᵼ�� MySQL ��ʹ���������Ӷ�����ȫ��ɨ�衣
SELECT * FROM users WHERE id NOT IN (1, 2, 3); -- ����ʧЧ
�����е���������С��MySQL ������Ϊȫ��ɨ���ʹ����������Ч������������£�MySQL ��ѡ��ֱ��ɨ�������ͨ���������ҡ�
��� �������ֻ�м����ļ���Ҫ���ң���ʱ���ȴ���Ŀ¼�������������㣬ֱ��ɨ��ȫ���ļ����졣
��ʱ�������������ã�MySQL �IJ�ѯ�Ż������ܻ���ݱ���ͳ����Ϣ�ͳɱ����㣬��Ϊȫ��ɨ���ʹ���������죬�Ӷ�����������
����ʧЧͨ�����ѯ����д�����������͡�����ʹ�á��Լ� MySQL ��ѯ�Ż����ľ����йء�Ϊ�˱�������ʧЧ����Ҫ������������������������磺
LIKE
��ѯ�б���ͨ���
%
��ͷ
ͨ�׵����⣬���԰� filesort ����Ϊ���ݿ�ġ���������ʽ��������ѯ�е� ORDER BY ����޷����������е�����˳��ʱ��MySQL �ͻ����� filesort ���ֶ���������
filesort
��
MySQL ����ijЩ�����ʹ��
filesort
�����磺
û�к��ʵ�����
��
����ѯ�е�
ORDER BY
�ֶ�û��������MySQL �޷���������˳��ֻ�ܽ���
filesort
����������
ʾ����
SELECT * FROM users ORDER BY age;
����
users
����û��
age
�ֶε���������ʱ�� MySQL �����
filesort
��
�������򣬵�������ƥ��
��
�����ǶԶ���н������򣬶���Щ��û�б��������ǻ�����˳��������Ҫ�󲻷�ʱ��
filesort
Ҳ�ᱻ������
ʾ����
SELECT * FROM users ORDER BY age, name;
�������ֻ��
age
����������û��
(age, name)
�ĸ�����������ô MySQL ��ʹ��
filesort
��
��ϲ�ѯ����������������ʧЧ
��
����ѯ�ж��ֶν��м����������ʱ��������Щ�ֶ���������Ҳ�޷�ֱ������������������
ʾ����
SELECT * FROM users ORDER BY LENGTH(name);
LENGTH(name)
��һ������������MySQL ��Ҫ�ֶ�������˻�ʹ��
filesort
��
filesort
�Ĺ�����ʽ��
filesort
ʵ����������ʵ�ַ�ʽ��ȡ���� MySQL �İ汾�����ã�
������������
��Older Versions����MySQL ��Ѳ�ѯ����������ж�����һ����������Ȼ�����
ORDER BY
�ֶ����бȽϲ��������ַ�ʽЧ����Խϵͣ���ΪҪ�������������ܴ�
����ɨ������
��Optimized Versions�����ڽ��µ� MySQL �汾�У�
filesort
������Ż���ֻ���ڵ�һ��ɨ��ʱ�ռ���Ҫ������ֶκ�
ROW_ID
��Ȼ��ͨ��������
ROW_ID
��ȥ��ȡ�������ݡ����ַ�ʽ���������������������������ܡ�
filesort
������˵ÿ�ζ����漰���̲��������п������ڴ�����ɣ������������ϴ�ʱ���ڴ治����������򣬾Ϳ��ܽ�����д����̽�������������Ӱ�����ܡ�
MySQL ��������Ҫ�IJ�������
filesort
����
sort_buffer_size
������ MySQL �������ڴ�������Ļ�������С���������������ܷŽ����������������ͻ����ڴ�����ɣ�����MySQL �Ὣ��������д����̣��Ӷ�Ӱ�����ܡ�
max_length_for_sort_data
������ MySQL ��������
filesort
�������������������ɨ�����򣩡����ڽ϶̵����ݣ�MySQL ������ѡ��Ч�ʽϸߵ�����ɨ������ʽ��
filesort
��
ʹ�ú��ʵ�����
��
��ֱ�ӵİ취����Ϊ��ѯ�е������ֶδ�������������������
ORDER BY
�Ӿ�ʱ��ȷ�������˸�������������Ч����
filesort
��
ʾ����
CREATE INDEX idx_age_name ON users (age, name);
����
sort_buffer_size
��
����޷�����
filesort
������ͨ������
sort_buffer_size
�Ĵ�С��ȷ���������ݿ������ڴ������򣬼��ٴ��� I/O��
���������������
��
ʹ��
LIMIT
�����Ʋ�ѯ������Ĵ�С�����Լ�����Ҫ��������������Ӷ���С
filesort
�Ŀ�����
ʾ����
SELECT * FROM users ORDER BY age LIMIT 100;
��������������ֶ�ʹ�ú���
��
��
ORDER BY
�У�������Ҫ�������ֶν��к�����������ʽ������������������ MySQL ʹ�������Ŀ����ԡ�
filesort
�� MySQL �е�һ��������ƣ�����ѯ����޷�ͨ������˳������ʱ��MySQL �ͻ�����
filesort
�����ֶ�������Ȼ�������С�file����������δ��һ���漰���̲������ڴ��е�����Ҳ�dz����ġ�
filesort
�� MySQL �ı�������ʽ��������ʱ���ɱ��⣬�����ǿ���ͨ������������������������С�ȷ�ʽ���Ż��������ܡ�
��ִ��һЩ�ṹ�Ա���IJ���������
ALTER TABLE
��
CREATE TABLE
��
DROP TABLE
��ʱ��MySQL ����ס����������ֹ�����̶߳Ըñ����в�������������
Ԫ������
��Metadata Lock����������֤���ṹ�ı��������������������������ͻ��
ʾ����
ALTER TABLE users ADD COLUMN age INT;
�˲�����������������
users
���IJ����ᱻ������ֱ�������ɡ�
UPDATE
��
DELETE
����
����ִ��һ��
UPDATE
��
DELETE
������δʹ������ʱ��MySQL ���ܻ���ס���������и��»�ɾ������Ϊ������ɨ�������С�
ʾ����
UPDATE users SET age = 30 WHERE name LIKE '%John%'; -- ���û����������������
����
LIKE '%John%'
�޷�����������MySQL ��Ҫȫ��ɨ�裬����������������
INSERT
��
UPDATE
��
DELETE
��
�� InnoDB �洢�����У�д������������м��� ���� ��Row Lock����������ijЩ����£���û������������£���MySQL ���ܻ��˻�Ϊ ���� ��Table Lock������ʹ���������ڳ�����δ�ύ��ع�������£�Ҳ���������������񣬴Ӷ�������ӵ���������
ʾ����
BEGIN;
UPDATE orders SET status = 'shipped' WHERE order_id = 1234; -- ����������������
COMMIT;
��������������˺ܳ�ʱ�䣬������������Ҳ��Ҫ����
orders
���еļ�¼�����ܻᵼ�µȴ���
LOCK TABLES
��ʽ����
MySQL ֧��ʹ��
LOCK TABLES
������ʽ�ضԱ���������Ϊ
������READ LOCK��
��
���WRITE LOCK��
����д���ڼ䣬�����̲߳��ܶԸñ������κζ���д�������ڶ����ڼ䣬�����߳�ֻ�ܶ�����������д����
ʾ����
LOCK TABLES users WRITE; -- �� `users` �����
��ʱ�������̶߳�
users
�����κζ�д�������ᱻ������ֱ�������ͷš�
����ʹ��ijЩ����������䣨��
INSERT INTO ... SELECT ...
��
INSERT IGNORE
�������������ʱ�����û��ǡ����������MySQL ���ܻ��������������� MyISAM �洢�����С�
ʾ����
INSERT INTO new_users SELECT * FROM users WHERE created_at > '2023-01-01'; -- ��������
���
created_at
û��������MySQL ��Ҫ����������������������
�� InnoDB �У��������ɾ���漰�����Լ��������ʱ��MySQL ���ܻ���ס�������ӱ���ȷ�����ݵ������ԡ���Ȼ InnoDB �������»�ʹ������������ijЩ���ӵ�����£�����û�к��ʵ����������ܻᵼ�±�����
ʾ����
DELETE FROM orders WHERE order_id = 100; -- �������Լ����飬������ס `customers` ��
���
orders
�������������
customers
������û�к��ʵ����������ܻ���ס
customers
����
�� MyISAM �洢�����У�д��������ס����������ʹֻ�޸���һ�С�������֮�䲻�ụ������������д����֮��ᷢ����������ˣ�MyISAM ���ڴ����߲���д����ʱ���ܻ�Ƶ��������
ʾ����
INSERT INTO myisam_table (name, age) VALUES ('John', 30); -- д����ס������
����д�����д����������Ƶ������ס��Ӱ�첢�����ܡ�
������Ӱ�����ݿ�IJ����Ժ����ܣ��������ͨ����Ҫ�������⡣������һЩ�������Լ��������ķ�����
����ʹ�� InnoDB �洢���棬��֧�� �м��� �������ھ����������±������������֮�£� MyISAM ʹ�õ��� ������ ���ڲ�����д���������ܽϲ
ͨ��Ϊ��ѯ�����е��д����ʵ�������������ȫ��ɨ�衣���磬����ã¾ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
name
�ֶν��в�ѯ�͸��£�Ӧ��Ϊ
name
�ֶδ���������
CREATE INDEX idx_name ON users (name);
����������Ч���������Ŀ����ԡ�
��ʱ��δ�ύ���������������Ӷ�����������ѯ����ˣ��������������ִ��ʱ�䣬ȷ���������о�����ɲ������ύ��
OPTIMIZE
��
ANALYZE
����
��Щ�������ס����Ԫ���ݣ���ֹ�����Ķ�д������������Щ����ʱӦ����߲���ʱ��Ρ�
�����Ҫִ�д�����
UPDATE
��
DELETE
�����Խ���������ִ�У��Լ���ÿ�β����漰�������������ⳤʱ��������
ʾ����
DELETE FROM users WHERE created_at < '2022-01-01' LIMIT 1000; -- ����ɾ��
��������ʹ��
LOCK TABLES
������ʽ�����������������ڸ߲��������¡�InnoDB ��������ƺ��м����Ѿ��㹻Ӧ�Դ�����������⡣
�� MySQL �У� ���� ��Deadlock����ָ��������������ȴ��Է����е������������Ƕ��޷�����ִ�С�����һ�ֳ����IJ������⣬�������ڸ߲�������£������ڷ�����ͬ��������Դʱ���ײ���������
���԰��������Ϊ����������һ��Õ·�ϣ����Ƕ���Ҫ�Է���·���ܼ���ǰ����A ��ס�� B ��·��B �ֵ�ס�� A ��·��ËҲ�������ã���������˶���ס�ˡ��������ݿ��б���Ϊ���� A �ȴ����� B �ͷ���Դ�������� B ͬʱҲ�ڵȴ����� A �ͷ���Դ���������������޷�������
MySQL ʹ�õĴ洢���� InnoDB �ṩ���м���������Ȼ����������ͻ�ĸ��ʣ���Ҳ�����׵���������InnoDB ��������ʱ����������Ⲣ���������⣬ͨ���ع�����һ�����������ƽ��֡�
�� MySQL �У��� InnoDB ��⵽����ʱ������ѡ��ع� ������С������ ��ͨ���ǻع�����������Դ������Ȼ��������ͻ��˷���һ��������Ϣ�������ڣ�
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
��һ�����񱻻ع�����һ��������Լ���ִ�У�������������⡣
���� MySQL ���Զ���Ⲣ������������Ƶ������������Ӱ��ϵͳ���ܣ���˾������������Ǻ��б�Ҫ�ġ�������һЩ�����ı��������ķ�����
ȷ�����������ڷ��ʶ��ű��������¼ʱ����Ñ��ͬ��˳��������Դ���������Ա��ⲻͬ�������ֽ������������������Ŀ����ԡ�
ʾ����
���������ڸ���
users
����
orders
��ʱ��������ס
users
��������ס
orders
��������������
��������ÿ�����������ķ�Χ��ʱ�䣬���ⳤʱ��ռ���������磬�������������ִ��ʱ�䣬���ٲ���Ҫ�IJ�ѯ��
ʾ����
BEGIN;
UPDATE users SET age = age + 1 WHERE id = 1;
COMMIT;
����������һ�������ڽ��й���IJ�����ȴ��û����롣
�ڲ�ѯʱ����ʹ�������������������������ر�����
UPDATE
��
DELETE
����ʱ�����ʵ��������Լ����������������Ӷ����������ķ��ա�
ʾ����
Ϊ
user_id
����������
CREATE INDEX idx_user_id ON orders (user_id);
�������ݿ�IJ�����������������ܵĻ��������ڸ߲�������½��д��������ݲ������߲������ʻ����������ĸ��ʡ�
ʹ�ú��ʵ�������뼶����Լ���������ͻ��InnoDB ֧�ֶ���������뼶���������
REPEATABLE READ
��
READ COMMITTED
������
READ COMMITTED
���뼶����Լ��������õ�������Ӷ��������������ĸ��ʡ�
ʾ����
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
�����Ҫ�Դ������ݽ��и��»�ɾ�����������Կ��Ƿ�������������ÿ�������������������Ӷ������������ա�
ʾ����
DELETE FROM orders WHERE order_date < '2023-01-01' LIMIT 1000;
ʹ��
LIMIT
����ɾ�������ݡ�
����������ʱ��InnoDB ���ڴ�����־�м�¼��������Ϣ�������������������Ϣ�Լ���������������Ͳ�ѯ������ͨ������ SQL ����ȡ������Ϣ��
SHOW ENGINE INNODB STATUS;
�����������ʾ InnoDB ��״̬��Ϣ�����а������һ����������ϸ��Ϣ������������������������ĵȴ������
���ȣ�ȷ�� ����ѯ��־ ��Slow Query Log���ѿ��������� MySQL ������¼ִ��ʱ�䳬��ָ����ֵ�IJ�ѯ�������ͨ��������Щ��־���ҳ�ϵͳ�к�ʱ��IJ�ѯ��
��������ѯ��־��
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1; -- ��������ѯ��ֵΪ 1 ��
֮������Բ鿴����ѯ��־���˽���Щ��ѯִ��ʱ�������������Щ��ѯ�����ֽ����Ż���
EXPLAIN
������ѯִ�мƻ�
ʹ��
EXPLAIN
������԰������˽� MySQL ���ִ�в�ѯ�������ṩ��Ϣ�磺��ѯ�Ƿ�ʹ����������ɨ���˶����С�����ʽ�ȡ������ͨ���鿴ִ�мƻ������ֲ�ѯ�е�����ƿ����
ʾ����
EXPLAIN SELECT * FROM users WHERE name = 'John';
ִ�н������ʾ��ѯ�����ͣ���
ALL
��
INDEX
��
RANGE
�ȣ������� MySQL �Ƿ�ʹ����ȫ��ɨ�裨
ALL
������������
INDEX
�����������
ALL
��ʾȫ��ɨ�裬��ͨ������Ҫ�Ż����źš�
��ν��һЩ�����Ľ����
ALL
��ʾȫ��ɨ�裬��Ҫ�Ż���
range
��
ref
��
const
��ʾʹ�������������ܽϺá�
NULL
����ʾû��ʹ��������
������ MySQL �Ż�����ѯ������ֶ�֮һ���ʵ������������������ٲ�ѯ��ɨ��������������ѯ�ٶȡ�
�����������Ż����ԣ�
WHERE
�Ӿ��е��ֶδ���������
SELECT * FROM users WHERE age = 30 AND status = 'active';
������Ϊ
(age, status)
����һ������������
ʾ����
CREATE INDEX idx_name ON users (name);
CREATE INDEX idx_age_status ON users (age, status);
ʾ����
SELECT name FROM users WHERE age = 30; -- ��� name �� age ���������У�MySQL ����ֻ������
WHERE UPPER(name) = 'JOHN'
�ᵼ������ʧЧ��
LIKE '%abc'
����ͨ���ǰ׺�IJ�ѯ��
�Ľ���ѯ����д�����Դ���������ܡ������Ǽ��ֳ������Ż����飺
INT
�洢���䣬��������
VARCHAR
��
SELECT *
��ֻ��ѯ��Ҫ���ֶΡ����ص�����Խ�٣���ѯ�ٶ�Խ�졣
ʾ����
SELECT id, name FROM users WHERE age = 30; -- ���� SELECT *��ֻȡ������ֶ�
�ֽ⸴�Ӳ�ѯ
�������ӵIJ�ѯ���Ϊ���С��ѯ����ʱ���������ܣ����������漰���������ʱ�����磬��һ���������
JOIN
�ĸ��Ӳ�ѯ����ֳɶ�β�ѯ�����м�����
ʹ��
LIMIT
�Ż���ҳ
���ڴ���ķ�ҳ��ѯ�У�����ɨ��������ݡ�����ͨ�����������������
LIMIT
����
ʾ����
SELECT * FROM users WHERE id > 1000 LIMIT 10; -- ���������ķ�ҳ
JOIN
����
JOIN
�����ڶ����ѯ�г��������������׵����������⣬�ر��ǵ����ܴ�ʱ���Ż�
JOIN
ʱ��ע�����
JOIN
��ʹ�õ��ֶΣ�ȷ�������к��ʵ�������
ʾ����
SELECT * FROM orders o JOIN users u ON o.user_id = u.id WHERE u.status = 'active';
����������£�
user_id
��
id
Ӧ�÷ֱ���
orders
��
users
������������
JOIN
���������磬��ɸѡ���������Ӳ�ѯ�У�������Ҫ������������
ʾ����
SELECT * FROM (SELECT id FROM users WHERE status = 'active') u JOIN orders o ON o.user_id = u.id;
MySQL ��һЩ���ò���ֱ��Ӱ���ѯ���ܣ��ر����ڸ߲������������������¡�������һЩ�������Ż�������
innodb_buffer_pool_size
������ InnoDB �Ļ���ش�С�������� MySQL �����ö����ڴ�����������ҳ�����ֵͨ������Ϊϵͳ�ڴ�� 70%-80%���Ա㾡���ܼ��ٴ��� I/O��
query_cache_size
�����ϵͳ�д����IJ�ѯ�������ͬ�ģ��������ò�ѯ���棬�Լ����ظ���ѯ�Ŀ�������Ҫע����ǣ�MySQL 8.0 �в�ѯ���汻���ã���Ϊ���Ը߲����������ܴ�������ƿ����
tmp_table_size
��
max_heap_table_size
����Щ������������ʱ���������ڴ���ʹ�õ�����С��������Щ������ֵ�����Ա���Ƶ������ʱ��д����̣��Ӷ���������
GROUP BY
��ѯ��Ч�ʡ�
�����ı��dz��󣬿��Կ���ʹ�� ������ ���Ż���ѯ���ܡ������������ݷֳɶ����С�������ӱ���MySQL ���Ը��ݲ�ѯ����ֱ�Ӷ�λ��ij���������Ӷ�����ɨ�����������
ʾ����
CREATE TABLE orders (
order_id INT,
order_date DATE,
user_id INT,
...
) PARTITION BY RANGE (YEAR(order_date)) (
PARTITION p0 VALUES LESS THAN (2010),
PARTITION p1 VALUES LESS THAN (2015),
PARTITION p2 VALUES LESS THAN (2020),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
���ij������ѯ�����������ͻ��������ɵģ�Ӧ�þ������ⳤ�����Ƶ��������ͨ����������Χ��ʹ�ú��ʵĸ��뼶�𡢱��������д�����ȷ�ʽ���������ȴ��������ķ������Ӷ��ӿ��ѯ�ٶȡ�
����ʹ�� MySQL �����IJ�ѯ���棬�㻹����ʹ��Ӧ�ò�Ļ�����ƣ��� Redis��Memcached������Ƶ�����ʵ����ݻ��浽�ڴ��У��������ݿ�ķ���Ƶ�ʡ�
ʾ����
# ��Ӧ�ò㻺�� MySQL ��ѯ���
cache.set('users:active', active_users, timeout=60*5) # ���� 5 ����
EXPLAIN
�˽�ִ�мƻ����Ż�����ѯ�ĵ�һ����
JOIN
����
����������ɨ���������������ʹ���������Dz�ѯ��
����������һ�ݰ������д��ˢ��ʼǣ�һ���Ӵ�ͨ���ҵ��ζ�����������Ô��û��ô�ѡ�
���Ǵ���д�ģ�
7701ҳ��BAT����д��ˢ��ʼǣ�����offer�õ�����
���ģ�����¼�ڣ��ҵļ�����վ cxykk.com������Ա�������վ ��������æ¾ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ü¹ï¿½Ê¦ï¿½É³ï¿½Ö®Â·ï¿½ï¿½ï¿½È¾ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
���޶�����ķdz���Ҫ���������ޣ��Ӹ���ע�һ�dz��м���
ʹ��Blender���ɳ���ģ��
�Ķ�ȫ����������ERA5�����ط���
�Ķ�Xpath���������﷨
�Ķ�����ѧϰ�������繹�����£�
�Ķ���ΪMateƷ��ʢ�䣺HarmonyOS NEXT�ӳ�����Ϸ���ܵõ�����ͷ�
�Ķ�ʵ�ֶ��󼯺���DataTable���໥ת��
�Ķ�Ӳ�̵Ļ���֪ʶ��ѡ��ָ��
�Ķ�������й��ƶ��ı�ͼ��ײ�
�Ķ�����NEXTԪ�����������ѿ����ϼ���Ʒ
�Ķ��ᳲ���С������������Ƽ��رշ���
�Ķ������ArcMap�����н���դ��ͼ���ز�������
�Ķ��㷨�����ݽṹ 1 - ģ��
�Ķ���Ѷ�����߿ͷ���Ӫ��ϵͳ����
�Ķ���Ѷ��Ƶҹ��ģʽ���ý̳�
�Ķ����ں���NEXT��Ѫ���Ŵ���������������
�Ķ�5. Spring Cloud OpenFeign ����ʽ WebService �ͻ��˵ij���ϸʹ��
�Ķ�Java����ģʽ����̬�����Ͷ�̬�����ĶԱȷ���
�Ķ�Win11�ʼDZ����Զ�����Ӧ�õ���ɫ����ʾ����
�Ķ�˼�� V1.5.6 ��׿��
��ս�귨 V7.5.0 ��׿��
У��������������׵������� V1.0 ��׿��
��˸֮�� V1.9.7 ��׿��
������Ե����� v1.0.4 ��׿��
������֮ŠV5.2.3 ��׿��
��������������Դ V1.0 ��׿��
���֮Ϣ V1.0 ��׿��
��ħ������������䣩 V1.0 ��׿��
���ں�������ϵ�����������������վ�����������������Ƽ�����
Ƶ�� ����Ƶ��������ר������������׿�������app����
�Ƽ� ��Ô���������°��������ܿ������ز���
���� ����ɫ������������ ���������ս������������
ɨ��ά�����������ֻ��汾��
ɨ��ά����������΢�Ź��ںţ�
��վ�������������������ϴ��������ַ���İ�Ȩ���뷢�ʼ�[email protected]
��ICP��2022002427��-10 �湫��������43070202000427��© 2013~2025 haote.com ������