最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql數(shù)據(jù)庫數(shù)據(jù)批量插入的實(shí)現(xiàn)

 更新時間:2024年11月11日 10:17:14   作者:danYan_01  
本文介紹了在MySQL數(shù)據(jù)庫中進(jìn)行數(shù)據(jù)批量插入和性能測試的方法,包括使用Navicat批量插入數(shù)據(jù)、編寫SQL測試、索引的創(chuàng)建和使用、查詢測試以及提升SQL性能的優(yōu)化方法,感興趣的可以參考一下

0 、前言

在寫sql語句的時候常常會有很多疑問,那就是當(dāng)單表的數(shù)據(jù)量很大的時候,查詢性能怎么樣,以及索引對數(shù)據(jù)查詢的影響,今天用navicat批量造了很多重復(fù)數(shù)據(jù)來對mysq在數(shù)據(jù)量大的時候查詢的性能的測試。

1 、使用navicat批量插入數(shù)據(jù)

函數(shù)—>新建函數(shù)–>填寫名,選擇函數(shù),點(diǎn)擊完成

在這里插入圖片描述

填寫函數(shù)

CREATE DEFINER=`root`@`%` PROCEDURE `userDataInsert`()
BEGIN
	# 設(shè)置循環(huán)變量
   DECLARE i INT DEFAULT 0;
WHILE i<=100000 DO
 INSERT INTO sup_check(advertiser_id,check_time,record_types_id,dept_id) VALUES(20,'2024-04-09',1,203);
 SET i = i + 1;
END WHILE;
END

保存后點(diǎn)擊運(yùn)行即可,此處會執(zhí)行時間較長,主要看你的主機(jī)性能,磁盤的讀寫速度等,最好在自己的本地虛擬機(jī)中去跑,節(jié)省時間。

2、編寫sql測試

此sql就是單表的查詢(嵌套子查詢),根據(jù)年份然后按照年月去對數(shù)據(jù)進(jìn)行一個分組,問gpt的時候,gpt說使用函數(shù)的時候進(jìn)行的是全表的掃描,不走索引,此時很慌,很想測試一下,走索引和不走索引到底有什么區(qū)別

SELECT year(check_time) as year ,month(check_time) as month ,COUNT(*) as checkNum
FROM sup_check   
WHERE 
    (dept_id = 100 OR dept_id IN (SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET(100,ancestors)))
    AND year(check_time) = 2024
GROUP BY year,month
ORDER BY year,month;

3、索引相關(guān)

單列索引

CREATE INDEX idx_check_time
ON sup_check (check_time);

復(fù)合索引

CREATE INDEX idx_column1_column2 ON sup_check (check_time, record_type_id);

唯一索引

CREATE UNIQUE INDEX uidx_column_name ON table_name (column_name);

全文索引

CREATE FULLTEXT INDEX ftx_column_name ON table_name (column_name);

使用表名 ,在某些情況下,你可能還想在索引名稱中包含表名,尤其是在大型數(shù)據(jù)庫中,這有助于避免索引名稱沖突:

CREATE INDEX idx_table_name_column_name ON table_name (column_name);

注意事項
避免使用特殊字符:不要在索引名稱中使用特殊字符,如 !, @, #, $, %, ^, &, *, (, ), -, +, =, {, }, [, ], |, , ;, :, ', ", , <, >, /, ?`。
長度限制:MySQL索引名稱的最大長度是64個字符

查看索引

這將返回以下列:

  • Table:表名
  • Non_unique:如果索引不能包含重復(fù)值,則為0;如果可以,則為1。
  • Key_name:索引的名稱。
  • Seq_in_index:索引中的列序列號。
  • Column_name:列名。
  • Collation:列如何排序,如果是定序的,則顯示排序順序;如果是未排序的,則顯示NULL。
  • Cardinality:索引中唯一值的估計數(shù)量。
  • Sub_part:如果列只是部分索引,則為索引的字符數(shù)。如果是整個列被索引,則為NULL。
  • Packed:指示關(guān)鍵字如何被壓縮,如果沒有被壓縮,則為NULL。
  • Null:如果列含有NULL,則顯示YES。
  • Index_type:索引類型,如BTREE、FULLTEXT、HASH等。
  • Comment:索引的備注信息。
SHOW INDEX FROM table_name;

4、查詢測試

建立完索引之后,我發(fā)現(xiàn)當(dāng)查詢出的數(shù)據(jù)量比較大的時候,查詢指定數(shù)據(jù)的速度確實(shí)快了,但是當(dāng)所查詢出的字段多或者數(shù)據(jù)條數(shù)多的時候還是會耗費(fèi)很長時間,那解決辦法就是分頁,一下查詢出這么多條數(shù)據(jù)肯定慢,分頁的話就特別快了。

SELECT year(check_time) as year ,month(check_time) as month ,COUNT(*) as checkNum
FROM sup_check   
WHERE 
    (dept_id = 100 OR dept_id IN (SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET(100,ancestors)))
    AND year(check_time) = 2024
GROUP BY year,month
ORDER BY year,month;
LIMIT 20 OFFSET 0;

5、提升sql的辦法

優(yōu)化sql,經(jīng)常查詢的字段使用索引,查詢出需要使用的字段,分頁查詢

6、探討分頁查詢的基本實(shí)現(xiàn)原理

首先使用count(*) 查詢出數(shù)據(jù)總條數(shù),此查詢是經(jīng)過mysql優(yōu)化過的,速度比較快,或者你去count(索引列)然后就是根據(jù)每頁的數(shù)據(jù)大小計算出總的頁數(shù)(int totalPages = (totalRecords + pageSize - 1) / pageSize;),然后就是執(zhí)行分頁查詢,查詢指定頁的數(shù)據(jù)

到此這篇關(guān)于mysql數(shù)據(jù)庫數(shù)據(jù)批量插入的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)mysql 數(shù)據(jù)批量插入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談MySQL之淺入深出頁原理

    淺談MySQL之淺入深出頁原理

    首先,我們需要知道,頁(Pages)是InnoDB中管理數(shù)據(jù)的最小單元。Buffer Pool中存的就是一頁一頁的數(shù)據(jù)。當(dāng)我們要查詢的數(shù)據(jù)不在Buffer Pool中時,InnoDB會將記錄所在的頁整個加載到Buffer Pool中去;同樣,將Buffer Pool中的臟頁刷入磁盤時,也是按照頁為單位刷入磁盤的
    2021-06-06
  • MySQL 5.7.43下載安裝配置的超詳細(xì)教程

    MySQL 5.7.43下載安裝配置的超詳細(xì)教程

    這篇文章主要介紹了MySQL 5.7.43下載安裝配置的超詳細(xì)教程,本文通過實(shí)例圖文結(jié)合的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • mysql單表查詢、多表查詢、分組查詢、子查詢案例解析

    mysql單表查詢、多表查詢、分組查詢、子查詢案例解析

    子查詢可以單獨(dú)作為臨時數(shù)據(jù),作為一張表或者一個字段,通過()進(jìn)行包裹,表達(dá)一個整體,這篇文章主要介紹了mysql單表查詢、多表查詢、分組查詢、子查詢案例解析,需要的朋友可以參考下
    2024-07-07
  • mysql中find_in_set函數(shù)的基本使用方法

    mysql中find_in_set函數(shù)的基本使用方法

    這篇文章主要給大家介紹了關(guān)于mysql中find_in_set函數(shù)的基本使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MySQL中進(jìn)行數(shù)據(jù)的加密和解密存儲的操作方法

    MySQL中進(jìn)行數(shù)據(jù)的加密和解密存儲的操作方法

    在MySQL中,我們可以使用對稱加密算法和非對稱加密算法對數(shù)據(jù)進(jìn)行加密和解密存儲,通過合理選擇加密算法和密鑰管理,可以有效提高數(shù)據(jù)的安全性,防止敏感信息的泄露和非法獲取,下面給大家分享MySQL中進(jìn)行數(shù)據(jù)的加密和解密存儲方法,感興趣的朋友一起看看吧
    2024-05-05
  • MySQL DBA教程:Mysql性能優(yōu)化之緩存參數(shù)優(yōu)化

    MySQL DBA教程:Mysql性能優(yōu)化之緩存參數(shù)優(yōu)化

    在平時被問及最多的問題就是關(guān)于 MySQL 數(shù)據(jù)庫性能優(yōu)化方面的問題,所以最近打算寫一個MySQL數(shù)據(jù)庫性能優(yōu)化方面的系列文章,希望對初中級 MySQL DBA 以及其他對 MySQL 性能優(yōu)化感興趣的朋友們有所幫助
    2014-03-03
  • mysql修改記錄時update操作 字段=字段+字符串

    mysql修改記錄時update操作 字段=字段+字符串

    這篇文章主要介紹了mysql修改記錄時update操作 字段=字段+字符串,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • MySQL創(chuàng)建新用戶、增加賬戶的2種方法及使用實(shí)例

    MySQL創(chuàng)建新用戶、增加賬戶的2種方法及使用實(shí)例

    這篇文章主要介紹了MySQL創(chuàng)建新用戶、增加賬戶的2種方法及使用實(shí)例,本文同時也介紹了更新和修改密碼的方法,需要的朋友可以參考下
    2014-12-12
  • mysql查詢上下級機(jī)構(gòu)的方法實(shí)例

    mysql查詢上下級機(jī)構(gòu)的方法實(shí)例

    大家應(yīng)該都知道表里有上下級機(jī)構(gòu)的,下面這篇文章主要給大家介紹了關(guān)于mysql查詢上下級機(jī)構(gòu)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Mysql?for?update導(dǎo)致大量行鎖的問題

    Mysql?for?update導(dǎo)致大量行鎖的問題

    這篇文章主要介紹了Mysql?for?update?導(dǎo)致大量行鎖的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論

宜兰市| 太仆寺旗| 双城市| 富裕县| 寿阳县| 雷山县| 滨海县| 隆昌县| 苏州市| 名山县| 和林格尔县| 行唐县| 历史| 政和县| 罗定市| 忻州市| 安达市| 郯城县| 岳阳县| 浦北县| 郑州市| 来宾市| 榆林市| 大埔县| 抚松县| 和政县| 宣城市| 手游| 中宁县| 区。| 宜良县| 中山市| 云林县| 南川市| 山丹县| 长兴县| 渑池县| 潜江市| 新闻| 梁平县| 九龙坡区|