{"id":103907,"date":"2024-09-13T13:26:47","date_gmt":"2024-09-13T13:26:47","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=103907"},"modified":"2024-09-13T13:26:48","modified_gmt":"2024-09-13T13:26:48","slug":"mariadb-server-fest-2024-indexes","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/blogs\/mariadb-server-fest-2024-indexes\/","title":{"rendered":"Thoughts Before Covering MariaDB Indexes in the MariaDB Server Fest 2024"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Preface<\/h2>\n\n\n\n<p>Next week, Tuesday, 17th of September, I\u2019m speaking at the MariaDB Server Fest. <a href=\"https:\/\/mariadb.org\/fest-2024-berlin\/mariadb-indexes-revisited\/\">My speech involves and heavily focuses on indexes within MariaDB<\/a>. One of my primary goals with this speech is for attendees to understand how to harness the power of indexing.<\/p>\n\n\n\n<p>My speech has a rather catchy title \u2013 \u201cMariaDB Indexes Revisited: Beyond the Documentation.\u201d That\u2019s because while the documentation of what indexes do in a variety of scenarios is helpful and lets users understand what indexes do and what makes them useful, sometimes it can also be rather confusing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Addressing Pain Points<\/h2>\n\n\n\n<p>Have a glance through <a href=\"https:\/\/mariadb.com\/kb\/en\/getting-started-with-indexes\/\">the page that lets you get started using indexes in MariaDB<\/a> \u2013 it won\u2019t be long until you notice that the page says the following:<\/p>\n\n\n<div class=\"block-core-list\">\n<ol class=\"wp-block-list\">\n<li><em>There are four main kinds of indexes in MariaDB<\/em>. Primary keys, unique indexes, \u201cvanilla\u201d indexes, and full-text indexes that are suitable for conducting full-text search operations.<\/li>\n\n\n\n<li><em>MariaDB splits the essentials of indexing into a separate page<\/em>. Doing so necessitates further searching and acquiring information on indexes as a whole.<\/li>\n\n\n\n<li><em>The section \u201cwhen to remove an index\u201d could be more informative<\/em>: MariaDB essentially says that indexes should be removed if they\u2019re rarely used or not used at all and doing so increases the performance of <code>INSERT<\/code> and <code>UPDATE<\/code> queries which is true, but there\u2019s just so much more that can be said about when to remove a specific kind of index and why that should be done, right?<\/li>\n\n\n\n<li><em>The essentials of an index page doesn\u2019t mention things that\u2019d be important<\/em>. The page doesn\u2019t mention that an index is a data structure that allows MariaDB to find rows. That\u2019s the concept of indexing to begin with! Strange, isn\u2019t it?<\/li>\n<\/ol>\n<\/div>\n\n\n<p>I could go on, but I think you get the point. Documentation is important, but in this case, the MariaDB index documentation contains many things that are skipped, missed, or, frankly, things that could have been phrased better. Plain indexes are a good example of this: things can, and should, be phrased better for everyone\u2019s sake.<\/p>\n\n\n\n<p>Specific use cases require specific approaches to indexing as well \u2013 wildcard searches may necessitate a <code>FULLTEXT<\/code> index (if they\u2019re on top of \u201cregular\u201d search methods, a <code>FULLTEXT<\/code> index may as well be an additional index on a vanilla B-tree index), and I\u2019m not even talking about the fact that there are B-tree indexes with their subtypes and everything that they entail (i.e. covering, composite, clustered, descending, <code>FULLTEXT<\/code>, <code>UNIQUE<\/code>, <code>HASH<\/code>, and <code>PRIMARY KEY<\/code> indexes), and then there are R-tree, or <em>spatial<\/em>, indexes as well. Thus, saying that \u201cthere are <em>four<\/em> main kinds of indexes\u201d may not necessarily be right and I\u2019ll dig into this in my talk.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Other MariaDB Things Attendees will Learn<\/h2>\n\n\n\n<p>Aside from indexing, I want attendees to learn a little about <em>the internal functionality of queries like <code>EXPLAIN<\/code> and <code>DESCRIBE<\/code><\/em> within MariaDB, too: for those reading this blog the functionality of these queries may be as clear as day, but that\u2019s not the case for many developers. I\u2019ll go through the possible outputs of <code>EXPLAIN<\/code> queries when they relate to indexes, tell attendees what messages like <code>Impossible where noticed after reading const tables<\/code> in MariaDB mean and how to overcome them, and also walk them through ways to come up with an action plan that helps their database and applications become and keep being performant.<\/p>\n\n\n\n<p>There will be takeaways related to indexing too, so don\u2019t miss out!<\/p>\n\n\n\n<p>The best part? My MariaDB indexing talk is only 20 minutes long. It\u2019s a perfect way to spend your lunch break when eating or drinking coffee or play it as a podcast! <a href=\"https:\/\/www.youtube.com\/@MariaDBFoundation\">Tune into MariaDB indexes on Tuesday by watching the playlist provided by the MariaDB Foundation on YouTube<\/a>. Also, <a href=\"https:\/\/lukasvileikis.com\/\">follow my blog<\/a> where I may publish more updates related to the conference later on. See you on Tuesday 13:55 CEST time!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog outlines why you should be coming to see a talk on MariaDB indexes at the MariaDB Server Fest on September 17, 2024.&hellip;<\/p>\n","protected":false},"author":339547,"featured_media":103911,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2,143523,145792],"tags":[159172,4168,5869,5065,159183,159187,159181,159184,159185,5854,159188,159186,159173,159189],"coauthors":[146040],"class_list":["post-103907","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blogs","category-databases","category-mysql","tag-b-tree-indexes","tag-database","tag-databases","tag-indexes","tag-mariadb","tag-mariadb-indexes","tag-mariadb-server","tag-mariadb-server-fest","tag-mariadb-server-fest-2024","tag-mysql","tag-mysql-indexes","tag-r-tree-indexes","tag-spatial-indexes","tag-sql-indexes"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/103907","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/339547"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=103907"}],"version-history":[{"count":8,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/103907\/revisions"}],"predecessor-version":[{"id":103917,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/103907\/revisions\/103917"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media\/103911"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=103907"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=103907"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=103907"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=103907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}