我一直在使用Python應用程序sqlite3的,和測試時,我有時查詢導致程序凍結。一個粗糙的(從內存)的例子:嵌套SELECT查詢有時候停
SELECT id,name FROM main_table WHERE name IN
(SELECT name FROM another_table WHERE another_table.attribute IN
('foo', 'bar', 'baz'))
通常,我第一次嘗試這樣的事情,程序簡單地凍結。現在,如果我先嚐試子查詢,然後再嘗試整個嵌套混亂,那麼它幾乎可以立即運行。
我在猜測它緩存了第一個更簡單的查詢的結果,以後這會讓事情下次更快,但即便如此,我想知道如何避免這種拖延。兩個表中
我對於SQL來說很新,並且從來沒有加入JOIN,因此它會回到關於這方面的書籍。另外,似乎很多SQL性能問題都以「創建索引」來回答。儘管我可以看到這樣做的語法,但我並不完全理解索引的作用。你能爲我推薦一個解釋嗎?我不想對這種貨物進行邪教並且不理解它就使用某些東西。 – spook 2010-10-21 11:53:26
@spook:這裏的答案作爲索引上的一個很好的入門(http://stackoverflow.com/questions/105400/what-are-indexes-and-how-can-i-use-them-to-optimize -queries功能於我的數據庫) – 2010-10-21 15:38:16