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

Индекс, базиран на SQLite Expression

Резюме :в този урок ще научите как да използвате индекса, базиран на изрази на SQLite, за запитване на данни, за да подобрите производителността на заявката, особено за заявките, които използват израз или функция.

Въведение в индекса, базиран на изрази на SQLite

Когато създавате индекс, често използвате една или повече колони в таблица. Освен нормалните индекси, SQLite ви позволява да формирате индекс на базата на изрази, включени колони на таблицата. Този вид индекс се нарича индекс, базиран на изрази.

Следната заявка избира клиентите, чиято дължина на компанията е по-голяма от 10 знака.

SELECT customerid,
       company
  FROM customers
 WHERE length(company) > 10
 ORDER BY length(company) DESC;Code language: SQL (Structured Query Language) (sql)

Ако използвате EXPLAIN QUERY PLAN изявление, ще откриете, че SQLite планирането на заявки е трябвало да сканира всички customers таблица, за да върнете набора от резултати.

EXPLAIN QUERY PLAN
SELECT customerid,
       company
  FROM customers
 WHERE length(company) > 10
 ORDER BY length(company) DESC;Code language: SQL (Structured Query Language) (sql)

Инструментът за планиране на заявки на SQLite е софтуерен компонент, който определя най-добрия алгоритъм или план за заявка за изпълнение на SQL оператор. От версия на SQLite 3.8.0 компонентът за планиране на заявки беше пренаписан, за да работи по-бързо и да генерира по-добри планове за заявки. Пренаписването е известно като планиране на заявки от следващо поколение или NGQP.

За да създадете индекс въз основа на израза LENGTH(company) , използвате следното изявление.

CREATE INDEX customers_length_company 
ON customers(LENGTH(company));Code language: SQL (Structured Query Language) (sql)

Сега, ако изпълните отново заявката по-горе, SQLite ще използва индекса на израза за търсене, за да избере данните, което е по-бързо.

Как работи индексът, базиран на изрази на SQLite

Инструментът за планиране на заявки на SQLite използва индекса, базиран на изрази, само когато изразът, който сте посочили в CREATE INDEX оператор, се появява по същия начин като в клаузата WHERE или клаузата ORDER BY.

Например, в примерната база данни имаме invoice_items таблица.

Следното изявление създава индекс, използвайки колоните за единична цена и количество.

CREATE INDEX invoice_line_amount 
ON invoice_items(unitprice*quantity);Code language: SQL (Structured Query Language) (sql)

Въпреки това, когато изпълните следната заявка:

EXPLAIN QUERY PLAN 
SELECT invoicelineid,
       invoiceid, 
       unitprice*quantity
FROM invoice_items
WHERE quantity*unitprice > 10;Code language: SQL (Structured Query Language) (sql)

Инструментът за планиране на заявки на SQLite не е използвал индекса, тъй като изразът в CREATE INDEX ( unitprice*quantity ) не е същото като това в WHERE клауза (количество*единична цена)

Ограничение на индекса, базирано на SQLite израз

По-долу са изброени всички ограничения за израза, който се появява в CREATE INDEX изявление.

  1. Изразът трябва да се отнася само за колоните на таблицата, която се индексира. Не може да се отнася до колоните на други таблици.
  2. Изразът може да използва само извикването на детерминирана функция.
  3. Изразът не може да използва подзаявка.

В този урок научихте как да използвате индекса, базиран на SQLite израз, за ​​да подобрите производителността на заявката.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Данните се попълват от датата на конкретна таблица вместо от цялата таблица в sqlite

  2. Какво е SQLite

  3. Неправилна неутрализация на специални елементи, използвани в SQL команда

  4. SQLite преименува PRINTF() на FORMAT()

  5. Съюз на SQLite