Warning: mkdir(): No space left on device in /var/www/hottg/post.php on line 59

Warning: file_put_contents(aCache/aDaily/2025-07-16/post/javarocks/--): Failed to open stream: No such file or directory in /var/www/hottg/post.php on line 72
πŸ€” РасскаТи ΠΏΡ€ΠΎ способы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ запросов Π² Π‘Π” @JavaRocks
TG Telegram Group & Channel
JavaRocks | United States America (US)
Create: Update:

πŸ€” РасскаТи ΠΏΡ€ΠΎ способы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ запросов Π² Π‘Π”

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ запросов Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π”) β€” это процСсс ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ быстрСС ΠΈ использовали мСньшС рСсурсов. Рассмотрим основныС способы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ SQL-запросов.

πŸŸ Π˜Π½Π΄Π΅ΠΊΡΡ‹
Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ поиск Π΄Π°Π½Π½Ρ‹Ρ…, создавая структуру, ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ. ВмСсто ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (Full Table Scan), Π‘Π” быстро Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ строки ΠΏΠΎ индСксу.

CREATE INDEX idx_user_name ON users(name);


πŸŸ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ `SELECT`
Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ SELECT *, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ систСму ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
ΠŸΠ»ΠΎΡ…ΠΎ
SELECT * FROM users;


Π₯ΠΎΡ€ΠΎΡˆΠΎ
SELECT id, name FROM users;


🟠ИспользованиС `EXPLAIN`
ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π‘Π” выполняСт запрос.
EXPLAIN SELECT * FROM users WHERE name = 'Ivan';


πŸŸ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ (`LIMIT`, `OFFSET`)
Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ N строк, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ LIMIT, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π‘Π” Π½Π΅ Π³Ρ€ΡƒΠ·ΠΈΠ»Π° лишниС Π΄Π°Π½Π½Ρ‹Π΅.
SELECT * FROM users ORDER BY id LIMIT 10;


πŸŸ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ `JOIN`
Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (JOIN) Ρ‚Π°Π±Π»ΠΈΡ† ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ дорогостоящим. Π’ΠΎΡ‚ нСсколько Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ:
- Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ индСксы Π½Π° полях, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² JOIN.
- Если Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ слоТныС JOIN Π½Π° подзапросы (EXISTS, IN).
CREATE INDEX idx_orders_user_id ON orders(user_id);


πŸŸ ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запросов
Часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ запросы ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘Π” (QUERY CACHE Π² MySQL) ΠΈΠ»ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ (Redis, Memcached).
SET GLOBAL query_cache_size = 1000000;


πŸŸ ΠΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ дСнормализация
Нормализация ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, разбивая Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
ДСнормализация ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, дублируя Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ количСство JOIN.

Π‘Ρ‚Π°Π²ΡŒ πŸ‘ ΠΈ Π·Π°Π±ΠΈΡ€Π°ΠΉ πŸ“š Π‘Π°Π·Ρƒ Java ΠΊΠ½ΠΈΠ³

πŸ€” РасскаТи ΠΏΡ€ΠΎ способы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ запросов Π² Π‘Π”

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ запросов Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π”) β€” это процСсс ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ быстрСС ΠΈ использовали мСньшС рСсурсов. Рассмотрим основныС способы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ SQL-запросов.

πŸŸ Π˜Π½Π΄Π΅ΠΊΡΡ‹
Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ поиск Π΄Π°Π½Π½Ρ‹Ρ…, создавая структуру, ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ. ВмСсто ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (Full Table Scan), Π‘Π” быстро Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ строки ΠΏΠΎ индСксу.
CREATE INDEX idx_user_name ON users(name);


πŸŸ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ `SELECT`
Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ SELECT *, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ систСму ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
ΠŸΠ»ΠΎΡ…ΠΎ
SELECT * FROM users;


Π₯ΠΎΡ€ΠΎΡˆΠΎ
SELECT id, name FROM users;


🟠ИспользованиС `EXPLAIN`
ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π‘Π” выполняСт запрос.
EXPLAIN SELECT * FROM users WHERE name = 'Ivan';


πŸŸ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ (`LIMIT`, `OFFSET`)
Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ N строк, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ LIMIT, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π‘Π” Π½Π΅ Π³Ρ€ΡƒΠ·ΠΈΠ»Π° лишниС Π΄Π°Π½Π½Ρ‹Π΅.
SELECT * FROM users ORDER BY id LIMIT 10;


πŸŸ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ `JOIN`
Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (JOIN) Ρ‚Π°Π±Π»ΠΈΡ† ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ дорогостоящим. Π’ΠΎΡ‚ нСсколько Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ:
- Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ индСксы Π½Π° полях, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² JOIN.
- Если Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ слоТныС JOIN Π½Π° подзапросы (EXISTS, IN).
CREATE INDEX idx_orders_user_id ON orders(user_id);


πŸŸ ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запросов
Часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ запросы ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘Π” (QUERY CACHE Π² MySQL) ΠΈΠ»ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ (Redis, Memcached).
SET GLOBAL query_cache_size = 1000000;


πŸŸ ΠΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ дСнормализация
Нормализация ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, разбивая Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
ДСнормализация ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, дублируя Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ количСство JOIN.

Π‘Ρ‚Π°Π²ΡŒ πŸ‘ ΠΈ Π·Π°Π±ΠΈΡ€Π°ΠΉ πŸ“š Π‘Π°Π·Ρƒ Java ΠΊΠ½ΠΈΠ³
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘4


>>Click here to continue<<

JavaRocks




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)


Warning: Undefined array key 3 in /var/www/hottg/function.php on line 115

Fatal error: Uncaught mysqli_sql_exception: Can't create/write to file '/tmp/#sql-temptable-a06e-450c28-f6e.MAI' (Errcode: 28 "No space left on device") in /var/www/hottg/function.php:216 Stack trace: #0 /var/www/hottg/function.php(216): mysqli_query() #1 /var/www/hottg/function.php(115): select() #2 /var/www/hottg/post.php(351): daCache() #3 /var/www/hottg/route.php(63): include_once('...') #4 {main} thrown in /var/www/hottg/function.php on line 216