An Absolute Beginner's Introduction to Database Indexes | Kyle's Cousin



An integer datatype is used here, because it’s the fastest and most efficient datatype to use for primary keys.CREATE INDEX idx_last_name ON customer (last_name);
CREATE INDEX idx_fullname ON customer (first_name, last_name);

MySQL organizes your indexed data in a tree structure that make look-ups faster. It simply follows the path in a tree to find the records you need, which is considerably faster than a full table scan.
If you use the InnoDB engine, you can add foreign keys to the customer and product table. MyISAM does not support this at the time of writin
SELECT CONCAT(c.first_name, ' ', c.last_name) AS fullname, r.review AS review FROM review r
LEFT JOIN customer c ON r.customer_id = c.id
This query joins 2 different tables, without any indexes. What’s important here is the field is are used for joining these tables: “customer_id”. We need a way so MySQL can easily join these tables without having to loop through all records.
1
CREATE INDEX idx_customer_review ON review (customer_id);
This will greatly increase the execution speed of the previous select query on large data sets.
You can do the same thing for “product_id” if you need to do joins with the product table. In almost all circumstances, indexes are beneficial on fields that are used to join tables.

any filter you perform on a non-indexed field will require a full scan of the table. So in principle, every field that you need to perform queries on should be indexed. Unfortunately, it’s not that simple. An index may improve your selection queries, but it will slow down insert and update queries. Pretty normal, considering that each time an insert, update or delete statement is executed, the index needs to be altered as well in order to keep it functional.
Another disadvantage is disk space… The more indexes you create, the more data has to be stored. Luckily, the space an index needs is almost always lower than the space that the table needs
UNIQUE INDEX: this index is used on a column to define that it can have no duplicate values. Each row must have a different value for this column. In fact, primary indexes are also unique indexes, but a unique index is not necessarily a primary index.
1
CREATE UNIQUE INDEX idx_product_name ON product (name);
FULLTEXT INDEX: this index type is mainly used on fields which contain large amounts of text data (CHAR, VARCHAR and TEXT). 
CREATE FULLTEXT INDEX idx_product_description ON product (description);
Read full article from An Absolute Beginner’s Introduction to Database Indexes | Kyle's Cousin

No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts