From 650f97a08f29a688c530e5f6c9eedc9269ed7bdc Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sat, 8 Jan 2022 13:34:01 -0800 Subject: [PATCH] Initial prototype of .analyze(), refs #366 --- sqlite_utils/db.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index dfc4723..1348b4a 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -923,6 +923,13 @@ class Database: "Run a SQLite ``VACUUM`` against the database." self.execute("VACUUM;") + def analyze(self, name=None): + "Run ``ANALYZE`` against the entire database or a named table or index." + sql = "ANALYZE" + if name is not None: + sql += " [{}]".format(name) + self.execute(sql) + class Queryable: def exists(self) -> bool: @@ -2902,6 +2909,10 @@ class Table(Queryable): ) return self + def analyze(self): + "Run ANALYZE against this table" + self.db.analyze(self.name) + def analyze_column( self, column: str, common_limit: int = 10, value_truncate=None, total_rows=None ) -> "ColumnDetails":