Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да обясня заявка с параметри в MySQL

Докато правите само равно (а не харесвате, което може да има късо съединение), просто го заменете със стойност:

EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';

Тъй като действително не изпълнява заявката, резултатите не трябва да се различават от действителните. Има някои случаи, в които това не е вярно (вече споменах LIKE). Ето пример за различните случаи на LIKE :

SELECT * FROM a WHERE a.foo LIKE ?
  1. Параметр 1 ==Foo - Може да използва индексно сканиране, ако индекс съществува.
  2. Параметр 1 ==%Foo - Изисква пълно сканиране на таблицата, дори ако съществува индекс
  3. Параметр 1 ==Foo% - Може да използва индексно сканиране в зависимост от кардиналността на индекса и други фактори

Ако се присъединявате и клаузата където се отстъпва на невъзможна комбинация (и следователно ще се получи късо съединение). Например:

SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?

Ако първият и вторият параметър са еднакви, той има един план за изпълнение, а ако са различни, ще има късо съединение (и ще върне 0 реда, без да удря никакви данни)...

Има и други, но това е всичко, за което се сещам в момента...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да дефинирате персонализиран ред в клауза ORDER BY?

  2. Използване на MySQL в Flask

  3. Mysql Workbench не може да избере чужд ключ

  4. Как да актуализирате АВТОМАТИЧНО MySQL след изтичане на полето за времеви отпечатък

  5. Group_Concat в Concat не работи с NULL стойности