mysql中10萬條記錄查詢慢的解決辦法?

2023-01-29 03:55:03 字數 5526 閱讀 3276

1樓:網友

如果ware_type選擇性比較高(即每個ware_type的記錄在總記錄數占比比較小)的話,可以考慮在ware_type上建索引。

2樓:匿名使用者

十萬條資料已經夠多了,通常最好的辦法就是建立索引,建立索引的命令: create index index_name on table_name(index_col_name,..

index_name:這是索引的建立名稱,你自己命乙個名稱。

table_name:這是資料表名稱,你的應該是ware_detail。

index_col_name:為哪一列資料建立索引,這個專案很重要,你的可以寫ware_type,請確保這行是不是數字型別,因為資料型別比字元型別查詢速度更快,最好將這一行設定乙個固定長度,這樣查詢速度更快,如果這個行資料長度能短一點更好,越短就意味著查詢速度越快。

mysql資料量上十萬條後,查詢慢導致伺服器卡有什麼解決辦法

3樓:愛可生雲資料庫

問題我們有乙個 sql,用於找到沒有主鍵 / 唯一鍵的表,但是在 mysql 上執行特別慢,怎麼辦?

實驗我們搭建乙個 mysql 的環境,此處省略搭建步驟。

寫個簡單的指令碼,製造一批帶主鍵和不帶主鍵的表:

執行一下指令碼:

現在執行以下 sql 看看效果:

執行了 ,感覺是非常慢了。

現在用一下 dba 三板斧,看看執行計畫:

感覺有點慘,由於 information_ 是元資料表,沒有必要的統計資訊。

那我們來 show warnings 看看 mysql 改寫後的 sql:

我們格式化一下 sql:

可以看到 mysql 將。

select from a where not in (select x from b) /非關聯子查詢。

轉換成了。select from a where not exists (select 1 from b where = 關聯子查詢。

如果我們自己是 mysql,在執行非關聯子查詢時,可以使用很簡單的策略:

select from a where not in (select x from b where ..非關聯子查詢:

1. 掃瞄 b 表中的所有記錄,找到滿足條件的記錄,存放在臨時表 c 中,建好索引2. 掃瞄 a 表中的記錄,與臨時表 c 中的記錄進行比對,直接在索引裡比對,而關聯子查詢就需要迴圈迭代:

select from a where not exists (select 1 from b where = and ..

) /關聯子查詢掃瞄 a 表的每一條記錄 ra: 掃瞄 b 表,找到其中的第一條滿足 ra 條件的記錄。

顯然,關聯子查詢的掃瞄成本會高於非關聯子查詢。

我們希望 mysql 能先"快取"子查詢的結果(快取這一步叫物化,materialization),但mysql 認為不快取更快,我們就需要給予 mysql 一定指導。

可以看到執行時間變成了 。

\1. 對於 information_schema 中的元資料表,執行計畫不能提供有效資訊。

\2. 通過檢視 mysql 改寫後的 sql,我們猜測了優化器發生了誤判。

\3. 我們增加了 hint,指導 mysql 正確進行優化判斷。

但目前我們的實驗僅限於猜測,猜中了萬事大吉,猜不中就無法做出好的診斷。

4樓:匿名使用者

建索引啊,如果是全文搜尋,做分詞索引,速度就很快了。

mysql update 10w條資料太慢我該如何處理? 10

5樓:匿名使用者

tel 字段簡歷索引了嗎?

給你個建議,可能你更新的字段都是索引字段,建議先把索引都刪掉,更新完資料之後在建立對應的索引。

如果mysql裡面的資料過多,查詢太慢怎麼辦?

6樓:沃然網路

在資料庫伺服器上面的mysql視窗裡面執行,很快就匯出了100多w記錄到excel裡面。

mysql> select * into outfile '/tmp/rpt_style1_' from `csf_pub`.`rpt_style1_0` ;

query ok, 1628696 rows affected ( sec)

7樓:丿打醬油的

這個有很多方法,第一種優化查詢sql,盡量避免全表檢索,第二種新增聯合索引,第三種採用表分割槽來存放資料,sql直接查對應的分割槽表。

我的mysql5.0在執行查詢10萬條資料的表時很慢呀

8樓:匿名使用者

where order by 都不能執行。

只是order by userid desc的話,對userid做索引。

9樓:匿名使用者

建立索引吧 userid,你的cpu不懂具體型號,不過最好把查詢時間發出來看一下。

mysql資料庫查詢好慢怎麼解決

10樓:麥兜範

28萬條資料量不是很大,字段稍微有點多,如果不加where 條件的話,資料庫判定是查詢所有資料庫,而加了where 條件時,資料庫判定要去詳細的查詢某個資料,所以速度自然會慢,建立索引可以解決您的問題;

create index 索引名 on 表名 (where 條件用到的列名,如有多個就以逗號分隔);

這次在去where 的時候就會快很多。

11樓:吳鐵騎

是不是你的資料庫表中的資料太多啊。

使用mysql資料庫,超過2萬多條資料時,查詢就非常的緩慢,請問有什麼好的優化方法嗎?

12樓:

如果sql語句沒有優化的空間,那就提高你的記憶體。。

13樓:無厘頭吧

加索引,少連結串列。

查詢盡可能不用連線查詢。

定時刪除無用的資料。

14樓:網友

對資料庫中的表建立索引。

如何提高上百萬級記錄mysql資料庫查詢速度

15樓:愛可生雲資料庫

先安裝 apache spark,查詢資料庫的速度可以提公升10倍。

在已有的 mysql 伺服器之上使用 apache spark (無需將資料匯出到 spark 或者 hadoop 平台上),這樣至少可以提公升 10 倍的查詢效能。使用多個 mysql 伺服器(複製或者 percona xtradb cluster)可以讓我們在某些查詢上得到額外的效能提公升。你也可以使用 spark 的快取功能來快取整個 mysql 查詢結果表。

思路很簡單:spark 可以通過 jdbc 讀取 mysql 上的資料,也可以執行 sql 查詢,因此我們可以直接連線到 mysql 並執行查詢。那麼為什麼速度會快呢?

對一些需要執行很長時間的查詢(如報表或者bi),由於 spark 是乙個大規模並行系統,因此查詢會非常的快。mysql 只能為每乙個查詢分配乙個 cpu 核來處理,而 spark 可以使用所有集群節點的所有核。在下面的例子中,我們會在 spark 中執行 mysql 查詢,這個查詢速度比直接在 mysql 上執行速度要快 5 到 10 倍。

另外,spark 可以增加「集群」級別的並行機制,在使用 mysql 複製或者 percona xtradb cluster 的情況下,spark 可以把查詢變成一組更小的查詢(有點像使用了分割槽表時可以在每個分割槽都執行乙個查詢),然後在多個 percona xtradb cluster 節點的多個從伺服器上並行的執行這些小查詢。最後它會使用map/reduce 方式將每個節點返回的結果聚合在一起形成完整的結果。

mysql,有一張表裡面已經有幾千萬條資料了,網頁訪問時極其緩慢,如何提高檢索速度?

16樓:誦葬花

加索引,還有分頁檢索,sql 當初寫的有問題,你不可能一次性全部都查出來扔給前台吧,那不是扯淡嗎,啥頁面也不可能一次性檢視幾千萬啊,分頁查詢吧。只能從sql語句上更改。

17樓:匿名使用者

一般查詢的話應該有常用的語句的。

比如常見查詢為:

select * from factdata where user='a' and module='b' and dtime between '2012-11-01 00:10:00' and '2012-11-01 00:

那麼你這時候需要在factdata表上建立(user,module,dtime)的聯合索引。

alter table factdata add index i_merge(`user`,`module`,`dtime`);

你可以執行。

explain select * from factdata where user='a' and module='b' and dtime between '2012-11-01 00:10:00' and '2012-11-01 00:

檢視建立索引前面的返回的結果。

假如沒有索引的話,explain會顯示返回查詢全表的資料自然會很慢了。

假如用到了索引的話,可以快速的找到需要查詢的區間裡的資料,往往需要查詢的資料量是全表的1/100,1/1000,那麼這時候花費的時間就是1/100,1/1000了。

18樓:我tm不管

加索引試試,一下是索引建立的規則:

1、表的主鍵、外來鍵必須有索引;

2、資料量超過300的表應該有索引;

3、經常與其他表進行連線的表,在連線欄位上應該建立索引;

4、經常出現在where子句中的字段,特別是大表的字段,應該建立索引;

5、索引應該建在選擇性高的字段上;

6、索引應該建在小字段上,對於大的文字字段甚至超長字段,不要建索引;

7、復合索引的建立需要進行仔細分析;盡量考慮用單字段索引代替:

a、正確選擇復合索引中的主列字段,一般是選擇性較好的字段;

b、復合索引的幾個字段是否經常同時以and方式出現在where子句中?單字段查詢是否極少甚至沒有?如果是,則可以建立復合索引;否則考慮單字段索引;

c、如果復合索引中包含的字段經常單獨出現在where子句中,則分解為多個單字段索引;

d、如果復合索引所包含的字段超過3個,那麼仔細考慮其必要性,考慮減少復合的字段;

e、如果既有單字段索引,又有這幾個欄位上的復合索引,一般可以刪除復合索引;

8、頻繁進行資料操作的表,不要建立太多的索引;

9、刪除無用的索引,避免對執行計畫造成負面影響;

以上是一些普遍的建立索引時的判斷依據。一言以蔽之,索引的建立必須慎重,對每個索引的必要性都應該經過仔細分析,要有建立的依據。因為太多的索引與不充分、不正確的索引對效能都毫無益處:

在表上建立的每個索引都會增加儲存開銷,索引對於插入、刪除、更新操作也會增加處理上的開銷。另外,過多的復合索引,在有單字段索引的情況下,一般都是沒有存在價值的;相反,還會降低資料增加刪除時的效能,特別是對頻繁更新的表來說,負面影響更大。

在不下萬條成語中,成語佔絕大多數,而七

這可能與多種因素有關 1.自 詩經 起,多個時期多種問題文體皆是四言體,人們養成了四言的習慣 2.四 與中國人的審美情趣有關,四代表四方 四季,四是正直,四有完美的風水,四言符合中國人自古以來的審美習慣 3.從語法上講,漢語注重簡潔與多變,而四字不多不少,四言成語即可以用到對比 比喻等多種手法,又避...

碧玉妝成一樹高,萬條垂下綠絲絛。這首詩是什麼意思

碧玉妝覆成一樹 高 制碧玉 綠色的玉,這裡把柳樹的枝葉比作碧玉。妝 打扮。一樹 滿樹,一 字這裡不表示數量,表示滿 全 整個的意思。全句的意思是 高高的柳樹,長滿了翠綠的新葉,看上去好像用碧玉裝飾扮的一樣。首句 碧玉妝成一樹高 是寫整體,說高高的柳樹像是碧玉妝飾成。用 碧玉 形容柳樹的翠綠晶瑩,突出...

10萬左右的SUV中,10萬左右買什麼SUV

翼搏空間太小,10w左右的國產車比較合適,長城h2或者byd可以考慮 10萬左右買什麼suv?10萬左右suv推薦 奇瑞瑞虎8 長安歐尚x7 捷達vs5 榮威rx5 比亞迪宋pro。1 奇瑞瑞虎8 奇瑞汽車銷量最好的車型,曾經是奇瑞汽車的銷量擔當。瑞虎8雖然是中型suv,但是並沒有布局七座。不過這款...