1 Востаннє редагувалося 221VOLT (29.03.2020 21:52:13)

Тема: запитання по нюансу синтаксису та швидкодії mysql (mariadb)

всім привіт!
запитання по нюансу синтаксису та швидкодії mysql (mariadb)



1 -- надибав у деякому лайнокоді наступний запит,
здивувався, бо такого не знаю:

чим цей запит

"... ORDER BY id+0 DESC"

відрізняється від наступного

"... ORDER BY id DESC"

?



2 -- нам потрібно оновити, допустимо, 10 000 рядків з трохи більшої кількості,
і у нас є наступні варіанти, як це зробити:

2.1 --

"UPDATE ... SET ... WHERE id IN(".implode(', ', $userIDs).")"

тобто, в один запит запихнули перечислення 10 000 id-шок в конструкцію IN

2.2 --

"UPDATE ... SET ... WHERE id = ".$id1.";UPDATE ... SET ... WHERE id = ".$id2.";UPDATE ... SET ... WHERE id = ".$idN.";"

тобто, запихнули оновлення рядків по одному на запит, багато запитів

2.3 --

"UPDATE ... SET ... WHERE n > 5 AND m != ".$m.";"

оновимо одним запитом потрібні рядки

я так думаю, що запит 3 буде ефективнішим відносно попередніх 2х,
та запитання про 2.1. та 2.2 -- при наявності індекса по id (унік) --
запит 1 помітно повільніший за запит 2, чи ні?
індекс допомагає при запиті 1, чи ні?

2

Re: запитання по нюансу синтаксису та швидкодії mysql (mariadb)

1. Перетворення типів?
2. Суттєво залежить від індексів та мережі, але 2.2. в будь-якому разі найповільніший. З іншого боку, хоча загальний час роботи у нього і найбільший, час блокування таблиці у нього найменший.

Подякували: ostap34PHP, 221VOLT2

3 Востаннє редагувалося 221VOLT (30.03.2020 11:55:14)

Re: запитання по нюансу синтаксису та швидкодії mysql (mariadb)

там id = назва колонки, та id = INT


який же там тип перетворювати так можна?
з INT в INT ?  *SCRATCH*


-------

справді, нагадали про блокування, дякую :)

де блокування всієї таблиці, і де блокування рядка --
різниця може бути дуже відчутна та помітна

4

Re: запитання по нюансу синтаксису та швидкодії mysql (mariadb)

Можу припустити багато варіантів, але всі вони зводяться до того, що наразі це не має жодного сенсу. Про всяк випадок - це могли бути стрічки з цифрами або ж треба було чомусь заборонити використовувати індекс при сортуванні.

Подякували: 221VOLT1