Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Cyborg)
  • No Skin
Collapse
Brand Logo

CIRCLE WITH A DOT

  1. Home
  2. Uncategorized
  3. I am always amazed by the expert mode of the SQLite CLI.

I am always amazed by the expert mode of the SQLite CLI.

Scheduled Pinned Locked Moved Uncategorized
sqlite
15 Posts 7 Posters 24 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • bohwaz@mamot.frB This user is from outside of this forum
    bohwaz@mamot.frB This user is from outside of this forum
    bohwaz@mamot.fr
    wrote last edited by
    #1

    I am always amazed by the expert mode of the SQLite CLI.

    You type .expert
    Then you paste your SQL query.
    And #sqlite tells you which indexes you should create to speed up your query.

    No AI, no complex program to install. No expensive database architect to pay for. It's just clever programming.

    To my knowledge this is the only database in the world to have this feature.

    https://sqlite.org/cli.html#index_recommendations_sqlite_expert_
    https://sqlite.org/src/dir?ci=trunk&name=ext/expert

    bohwaz@mamot.frB timwardcam@c.imT larsmb@mastodon.onlineL delsehi@mastodon.nuD craigfrancis@mastodon.socialC 6 Replies Last reply
    1
    0
    • bohwaz@mamot.frB bohwaz@mamot.fr

      I am always amazed by the expert mode of the SQLite CLI.

      You type .expert
      Then you paste your SQL query.
      And #sqlite tells you which indexes you should create to speed up your query.

      No AI, no complex program to install. No expensive database architect to pay for. It's just clever programming.

      To my knowledge this is the only database in the world to have this feature.

      https://sqlite.org/cli.html#index_recommendations_sqlite_expert_
      https://sqlite.org/src/dir?ci=trunk&name=ext/expert

      bohwaz@mamot.frB This user is from outside of this forum
      bohwaz@mamot.frB This user is from outside of this forum
      bohwaz@mamot.fr
      wrote last edited by
      #2

      How it works is also clever: it analyses the where and order by clauses of the query, creates indexes based on that, retries the query and checks which indexes have been used. Simple but effective!

      1 Reply Last reply
      0
      • bohwaz@mamot.frB bohwaz@mamot.fr

        I am always amazed by the expert mode of the SQLite CLI.

        You type .expert
        Then you paste your SQL query.
        And #sqlite tells you which indexes you should create to speed up your query.

        No AI, no complex program to install. No expensive database architect to pay for. It's just clever programming.

        To my knowledge this is the only database in the world to have this feature.

        https://sqlite.org/cli.html#index_recommendations_sqlite_expert_
        https://sqlite.org/src/dir?ci=trunk&name=ext/expert

        timwardcam@c.imT This user is from outside of this forum
        timwardcam@c.imT This user is from outside of this forum
        timwardcam@c.im
        wrote last edited by
        #3

        @bohwaz Plenty have an "explain" feature which gives you the same information albeit less directly.

        bohwaz@mamot.frB 1 Reply Last reply
        0
        • timwardcam@c.imT timwardcam@c.im

          @bohwaz Plenty have an "explain" feature which gives you the same information albeit less directly.

          bohwaz@mamot.frB This user is from outside of this forum
          bohwaz@mamot.frB This user is from outside of this forum
          bohwaz@mamot.fr
          wrote last edited by
          #4

          @TimWardCam
          Nope explain doesn't tell you which index you should create. It just tells you what the query planner does.

          timwardcam@c.imT theconstructor@social.tchncs.deT 2 Replies Last reply
          0
          • bohwaz@mamot.frB bohwaz@mamot.fr

            @TimWardCam
            Nope explain doesn't tell you which index you should create. It just tells you what the query planner does.

            timwardcam@c.imT This user is from outside of this forum
            timwardcam@c.imT This user is from outside of this forum
            timwardcam@c.im
            wrote last edited by
            #5

            @bohwaz It's often enough blindingly obvious what you should do about it - I did say "less directly".

            1 Reply Last reply
            0
            • bohwaz@mamot.frB bohwaz@mamot.fr

              I am always amazed by the expert mode of the SQLite CLI.

              You type .expert
              Then you paste your SQL query.
              And #sqlite tells you which indexes you should create to speed up your query.

              No AI, no complex program to install. No expensive database architect to pay for. It's just clever programming.

              To my knowledge this is the only database in the world to have this feature.

              https://sqlite.org/cli.html#index_recommendations_sqlite_expert_
              https://sqlite.org/src/dir?ci=trunk&name=ext/expert

              larsmb@mastodon.onlineL This user is from outside of this forum
              larsmb@mastodon.onlineL This user is from outside of this forum
              larsmb@mastodon.online
              wrote last edited by
              #6

              @bohwaz Oh, I didn't know that. I did know about postgres's EXPLAIN, but that's somewhat less helpful.

              1 Reply Last reply
              0
              • bohwaz@mamot.frB bohwaz@mamot.fr

                I am always amazed by the expert mode of the SQLite CLI.

                You type .expert
                Then you paste your SQL query.
                And #sqlite tells you which indexes you should create to speed up your query.

                No AI, no complex program to install. No expensive database architect to pay for. It's just clever programming.

                To my knowledge this is the only database in the world to have this feature.

                https://sqlite.org/cli.html#index_recommendations_sqlite_expert_
                https://sqlite.org/src/dir?ci=trunk&name=ext/expert

                delsehi@mastodon.nuD This user is from outside of this forum
                delsehi@mastodon.nuD This user is from outside of this forum
                delsehi@mastodon.nu
                wrote last edited by
                #7

                @bohwaz I'm slightly confident that SQL Server has something like this too, but you get those recommendations by querying the proprietary version of INFORMATION_SCHEMA (or use the GUI in the Azure Portal). It's also based on how often some columns are used in queries, so it also uses some internal telemetry

                bohwaz@mamot.frB 1 Reply Last reply
                0
                • delsehi@mastodon.nuD delsehi@mastodon.nu

                  @bohwaz I'm slightly confident that SQL Server has something like this too, but you get those recommendations by querying the proprietary version of INFORMATION_SCHEMA (or use the GUI in the Azure Portal). It's also based on how often some columns are used in queries, so it also uses some internal telemetry

                  bohwaz@mamot.frB This user is from outside of this forum
                  bohwaz@mamot.frB This user is from outside of this forum
                  bohwaz@mamot.fr
                  wrote last edited by
                  #8

                  @delsehi
                  Interesting. I never used SQL server though. But I don't think this exists in MySQL, postgre or Oracle.

                  1 Reply Last reply
                  0
                  • bohwaz@mamot.frB bohwaz@mamot.fr

                    I am always amazed by the expert mode of the SQLite CLI.

                    You type .expert
                    Then you paste your SQL query.
                    And #sqlite tells you which indexes you should create to speed up your query.

                    No AI, no complex program to install. No expensive database architect to pay for. It's just clever programming.

                    To my knowledge this is the only database in the world to have this feature.

                    https://sqlite.org/cli.html#index_recommendations_sqlite_expert_
                    https://sqlite.org/src/dir?ci=trunk&name=ext/expert

                    craigfrancis@mastodon.socialC This user is from outside of this forum
                    craigfrancis@mastodon.socialC This user is from outside of this forum
                    craigfrancis@mastodon.social
                    wrote last edited by
                    #9

                    @bohwaz tbh I’ve not used this, but MySQL does have the System Variable `log_queries_not_using_indexes`, which I assume would push you towards using an INDEX on all queries (but the docs suggest to me it’s more about queries that return all rows):

                    Link Preview Image
                    fw_error_www

                    favicon

                    (dev.mysql.com)

                    bohwaz@mamot.frB 1 Reply Last reply
                    0
                    • craigfrancis@mastodon.socialC craigfrancis@mastodon.social

                      @bohwaz tbh I’ve not used this, but MySQL does have the System Variable `log_queries_not_using_indexes`, which I assume would push you towards using an INDEX on all queries (but the docs suggest to me it’s more about queries that return all rows):

                      Link Preview Image
                      fw_error_www

                      favicon

                      (dev.mysql.com)

                      bohwaz@mamot.frB This user is from outside of this forum
                      bohwaz@mamot.frB This user is from outside of this forum
                      bohwaz@mamot.fr
                      wrote last edited by
                      #10

                      @craigfrancis
                      Yup but it will not tell you which indexes should be created, you'll have to think about the query and try things yourself. Fine for a simple query, but when it's a 100 lines long... Slightly harder 🙂

                      craigfrancis@mastodon.socialC 1 Reply Last reply
                      0
                      • bohwaz@mamot.frB bohwaz@mamot.fr

                        @craigfrancis
                        Yup but it will not tell you which indexes should be created, you'll have to think about the query and try things yourself. Fine for a simple query, but when it's a 100 lines long... Slightly harder 🙂

                        craigfrancis@mastodon.socialC This user is from outside of this forum
                        craigfrancis@mastodon.socialC This user is from outside of this forum
                        craigfrancis@mastodon.social
                        wrote last edited by
                        #11

                        @bohwaz true, and I think SQLite has some really cool features like that… personally I’m trying get MySQL and MariaDB to implement a very simple `WHERE id IN (?)` with a single placeholder for multiple values, as I still keep seeing people `implode(‘, ‘, $ids)` directly into the SQL string for some of that SQL Injection fun 🙂

                        bohwaz@mamot.frB 1 Reply Last reply
                        0
                        • craigfrancis@mastodon.socialC craigfrancis@mastodon.social

                          @bohwaz true, and I think SQLite has some really cool features like that… personally I’m trying get MySQL and MariaDB to implement a very simple `WHERE id IN (?)` with a single placeholder for multiple values, as I still keep seeing people `implode(‘, ‘, $ids)` directly into the SQL string for some of that SQL Injection fun 🙂

                          bohwaz@mamot.frB This user is from outside of this forum
                          bohwaz@mamot.frB This user is from outside of this forum
                          bohwaz@mamot.fr
                          wrote last edited by
                          #12

                          @craigfrancis
                          I'm personally using a custom ?? placeholder for this case. And I use implode, but before the call I'm quoting each value 🙂

                          craigfrancis@mastodon.socialC 1 Reply Last reply
                          0
                          • bohwaz@mamot.frB bohwaz@mamot.fr

                            @craigfrancis
                            I'm personally using a custom ?? placeholder for this case. And I use implode, but before the call I'm quoting each value 🙂

                            craigfrancis@mastodon.socialC This user is from outside of this forum
                            craigfrancis@mastodon.socialC This user is from outside of this forum
                            craigfrancis@mastodon.social
                            wrote last edited by
                            #13

                            @bohwaz yep, that’s probably fine, but I’m not worried about you, I’m worried about the vast majority of developers, and those who aren’t exactly writing the code themselves 🙂

                            1 Reply Last reply
                            0
                            • bohwaz@mamot.frB bohwaz@mamot.fr

                              I am always amazed by the expert mode of the SQLite CLI.

                              You type .expert
                              Then you paste your SQL query.
                              And #sqlite tells you which indexes you should create to speed up your query.

                              No AI, no complex program to install. No expensive database architect to pay for. It's just clever programming.

                              To my knowledge this is the only database in the world to have this feature.

                              https://sqlite.org/cli.html#index_recommendations_sqlite_expert_
                              https://sqlite.org/src/dir?ci=trunk&name=ext/expert

                              mdfranz@infosec.exchangeM This user is from outside of this forum
                              mdfranz@infosec.exchangeM This user is from outside of this forum
                              mdfranz@infosec.exchange
                              wrote last edited by
                              #14

                              @bohwaz now I'm going to have to check ClickHouse and DuckDb. 🤔

                              1 Reply Last reply
                              0
                              • bohwaz@mamot.frB bohwaz@mamot.fr

                                @TimWardCam
                                Nope explain doesn't tell you which index you should create. It just tells you what the query planner does.

                                theconstructor@social.tchncs.deT This user is from outside of this forum
                                theconstructor@social.tchncs.deT This user is from outside of this forum
                                theconstructor@social.tchncs.de
                                wrote last edited by
                                #15

                                @bohwaz @TimWardCam in SQL Server query plan gives you the CREATE INDEX SQL, if it thinks it's badly needed

                                1 Reply Last reply
                                0
                                • R relay@relay.an.exchange shared this topic
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                • Login

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • World
                                • Users
                                • Groups