2010-07-27 19 views
0

我有一個表25.000行(字符串列)。SQLite:INSERT和ORDER在同一時間

我想改進我的選擇查詢。 「SELECT name FROM FROM WHERE name LIKE'something'ORDER BY name LIMIT 15」

數據庫將是靜態的。

我想知道當我在表格中插入一行時是否可以對列進行排序,以及如果表格已經按名稱排序,會減少選擇查詢的時間?

回答

2

你所要求的沒有意義 - ORDER子句只適用於SELECT,而不適用於INSERT操作。 (將你訂購的例子嗎?)

如果你在談論建立某種形式的index,只要你指定的名字列是index(理想構建table時),有沒有很多否則你可以做 - 這取決於RDBMS系統的作者來處理剩下的事情。 (即:他們決定何時構建/更新索引等 - 你無法控制這一點。)

+0

請注意,聚簇索引通常控制磁盤上數據的順序,因此可能是他想要的 - 在名稱列上聲明聚簇索引。儘管與任何優化一樣,RDBMS可能只是將其作爲提示而不是採取行動。 – Rup 2010-07-27 10:55:27

2

如果數據庫將是靜態的,爲什麼要使用它?只需在程序中對這15個名字進行硬編碼即可。如果您的意思是表格不會改變,那麼爲了改善您的查詢,您可以在名稱列名上放置索引或使用更多數量的緩存。

+0

+1非常好的一點。 :-) – 2010-07-27 11:00:21

0

喜歡的東西下面的工作:

INSERT INTO TABLE1 (S1, S2, S3) SELECT S1, S2, S3 FROM TEMP ORDER BY S1, S2, S3 

此處的排序爲插入前SELECT語句的一部分來完成。