欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

0 、前言

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

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)行即可,此處會(huì)執(zhí)行時(shí)間較長(zhǎng),主要看你的主機(jī)性能,磁盤的讀寫速度等,最好在自己的本地虛擬機(jī)中去跑,節(jié)省時(shí)間。

2、編寫sql測(cè)試

此sql就是單表的查詢(嵌套子查詢),根據(jù)年份然后按照年月去對(duì)數(shù)據(jù)進(jìn)行一個(gè)分組,問gpt的時(shí)候,gpt說使用函數(shù)的時(shí)候進(jìn)行的是全表的掃描,不走索引,此時(shí)很慌,很想測(cè)試一下,走索引和不走索引到底有什么區(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ù)庫(kù)中,這有助于避免索引名稱沖突:

CREATE INDEX idx_table_name_column_name ON table_name (column_name);

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

查看索引

這將返回以下列:

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

4、查詢測(cè)試

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

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)常查詢的字段使用索引,查詢出需要使用的字段,分頁(yè)查詢

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

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

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

相關(guān)文章

  • MySQL查詢數(shù)據(jù)(單表查詢)詳解

    MySQL查詢數(shù)據(jù)(單表查詢)詳解

    這篇文章主要介紹了MySQL查詢數(shù)據(jù)(單表查詢)的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • CentOS 7中源碼安裝MySQL 5.7.6+詳細(xì)教程

    CentOS 7中源碼安裝MySQL 5.7.6+詳細(xì)教程

    最近在CentOS 7中源碼安裝MySQL 5.7.6+,發(fā)現(xiàn)MySQL5.7.6+以后的安裝方式真的與以前版本的MySQL安裝方式大大的不同呀。不自己安裝一把,你都不知道不同之處在哪,下面這篇文章是通過自己的安裝過程總結(jié)的一篇安裝教程,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • win10免安裝版本的MySQL安裝配置教程

    win10免安裝版本的MySQL安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了win10免安裝版本的MySQL的下載安裝和配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Navicat Premium15連接云服務(wù)器中的數(shù)據(jù)庫(kù)問題及遇到坑

    Navicat Premium15連接云服務(wù)器中的數(shù)據(jù)庫(kù)問題及遇到坑

    這篇文章主要介紹了Navicat Premium15連接云服務(wù)器中的數(shù)據(jù)庫(kù)問題及遇到坑,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • mysql 8.0.11壓縮包版本安裝教程

    mysql 8.0.11壓縮包版本安裝教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.11壓縮包版本安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • asp采用ODBC接口訪問MySQL的方法

    asp采用ODBC接口訪問MySQL的方法

    asp采用ODBC接口訪問MySQL的方法...
    2007-07-07
  • 分析mysql中一條SQL查詢語句是如何執(zhí)行的

    分析mysql中一條SQL查詢語句是如何執(zhí)行的

    為了充分發(fā)揮MySQL的性能并順利地使用,就必須正確理解其設(shè)計(jì)思想,因此,了解MySQL的邏輯架構(gòu)是必要的。本文將通過一條SQL查詢語句的具體執(zhí)行過程來詳細(xì)介紹MySQL架構(gòu)中的各個(gè)組件
    2021-06-06
  • MySQL延遲關(guān)聯(lián)性能優(yōu)化方法

    MySQL延遲關(guān)聯(lián)性能優(yōu)化方法

    這篇文章主要介紹了MySQL延遲關(guān)聯(lián)性能優(yōu)化方法,本文講解了延遲關(guān)聯(lián)的背景、延遲關(guān)聯(lián)的分析、延遲關(guān)聯(lián)的解決等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • mysql charset=utf8你真的弄明白意思了嗎

    mysql charset=utf8你真的弄明白意思了嗎

    這篇文章主要介紹了mysql charset=utf8你真的弄明白意思了嗎?文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 利用Xtrabackup工具備份及恢復(fù)(MySQL DBA的必備工具)

    利用Xtrabackup工具備份及恢復(fù)(MySQL DBA的必備工具)

    Xtrabackup 是percona的一個(gè)開源項(xiàng)目,可以熱備份innodb ,XtraDB,和MyISAM(會(huì)鎖表),可以看做是InnoDB Hotbackup的免費(fèi)替代品
    2013-04-04

最新評(píng)論