gpt4 book ai didi

mysql - 如何提高选择查询的性能

转载 作者:行者123 更新时间:2023-11-30 23:00:57 26 4
gpt4 key购买 nike

我使用 mysql 在该表中创建了具有 45 列和总共 30000 条数据的表

我必须从这个表中检索所有数据,但是这需要很长时间,所以我想做一些优化。我已经应用了主键和唯一键,希望进一步提高性能。

请告知我还能使用什么?下面是创建和选择语句

CREATE TABLE TISMCT 
(
MASTER_ID INTEGER AUTO_INCREMENT PRIMARY KEY,
SLIP_NO BIGINT UNIQUE,
TRUCK_NO VARCHAR(20),
SUB_TRANSPORTER_NAME VARCHAR(50),
VMS_IN_WB_NO VARCHAR(10),
VMS_IN_WB_USER VARCHAR(50),
VMS_IN_DATE DATE,
VMS_IN_TIME TIME,
VMS_TARE_WEIGHT DECIMAL(11,3),
VMS_OUT_WB_NO VARCHAR(10),
VMS_OUT_WB_USER VARCHAR(50),
VMS_OUT_DATE DATE,
VMS_OUT_TIME TIME,
VMS_GROSS_WEIGHT DECIMAL(11,3),
VMS_NET_WEIGHT DECIMAL(11,3),
INVOICE_NO INTEGER,
ROYALITY_TYPE VARCHAR(10),
ROYALTY_PASS_NO VARCHAR(50),
EXCISE_AMOUNT DECIMAL(11,3),
EDU_CESS_AMOUNT DECIMAL(11,3),
HSECESS_AMOUNT DECIMAL(11,3),
CLEAN_ENG_CESS_AMOUNT DECIMAL(11,3),
ROYALTY_AMOUNT DECIMAL(11,3),
BAL_ROYALTY_AMOUNT DECIMAL(20,3),
VS_IN_WB_NO VARCHAR(10),
VS_IN_WB_USER VARCHAR(50),
VS_IN_DATE DATE,
VS_IN_TIME TIME,
VS_GROSS_WEIGHT DECIMAL(11,3),
VS_OUT_WB_NO VARCHAR(10),
VS_OUT_WB_USER VARCHAR(50),
VS_OUT_DATE DATE,
VS_OUT_TIME TIME,
VS_TARE_WEIGHT DECIMAL(11,3),
VS_NET_WEIGHT DECIMAL(11,3),
DUMP_LOCATION VARCHAR(50),
IS_BILLED CHAR(1),
IS_ACTIVE CHAR(1),
CREATED_DT DATE,
MODIFY_DT DATE,
CREATED_BY VARCHAR(50),
MODIFY_BY VARCHAR(50),
EXTRA_FIELD1 VARCHAR(50),
EXTRA_FIELD2 VARCHAR(50),
EXTRA_FIELD3 VARCHAR(50)
);

查询

SELECT 
MASTER_ID,
SLIP_NO,
TRUCK_NO,
SUB_TRANSPORTER_NAME,
VMS_IN_WB_NO,
VMS_IN_WB_USER,
VMS_IN_DATE,
VMS_IN_TIME,
VMS_TARE_WEIGHT,
VMS_OUT_WB_NO,
VMS_OUT_WB_USER,
VMS_OUT_DATE,
VMS_OUT_TIME,
VMS_GROSS_WEIGHT,
VMS_NET_WEIGHT,
INVOICE_NO,
ROYALITY_TYPE,
ROYALTY_PASS_NO,
EDU_CESS_AMOUNT,
HSECESS_AMOUNT,
CLEAN_ENG_CESS_AMOUNT,
ROYALTY_AMOUNT,
BAL_ROYALTY_AMOUNT,
VS_IN_WB_NO,
VS_IN_WB_USER,
VS_IN_DATE,
VS_IN_TIME,
VS_GROSS_WEIGHT,
VS_OUT_WB_NO,
VS_OUT_WB_USER,
VS_OUT_DATE,
VS_OUT_TIME,
VS_TARE_WEIGHT,
VS_NET_WEIGHT,
DUMP_LOCATION,
IS_BILLED,
IS_ACTIVE,
CREATED_DT,
MODIFY_DT,
CREATED_BY,
MODIFY_BY,
EXTRA_FIELD1,
EXTRA_FIELD2,
EXTRA_FIELD3
FROM
TISMCT
WHERE IS_BILLED = 'Y'
AND IS_ACTIVE = 'Y'
ORDER BY CREATED_DT DESC ;

最佳答案

在选择本身中,您可以指定一些条件。您真的要检索所有数据还是最新数据或最旧数据。根据您的要求,您可以修改查询。

如果你想要基于日期列的最新数据,例如:

Select top 1000 
column1, colunm2,......
From
table
Order By
date Desc

这将检索最新的 1000 条记录。

如果你想要基于日期列的最旧数据

Select top 1000 column1, colunm2,...... 
from table
order by date asc

这将返回最早的 1000 条记录。

(或)放在哪里条件

Select top 1000 column1, colunm2,...... 
from table
where column = 1234
order by date asc

明确您的需求并相应地优化查询。

关于mysql - 如何提高选择查询的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24021424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com