簡體   English   中英

MySQL表視圖數據類型

[英]Mysql table view datatype

我正在嘗試將數據類型bigint(37)更改為int(11)。 我嘗試了幾種方法CAST或CONVERT,但未成功結束。

如何在此表VIEW中更改數據類型? 請。 謝謝。

在此處輸入圖片說明

CREATE OR REPLACE VIEW gtemp_view AS
    SELECT
    d1.Week AS Week1,
    d2.Week AS Week2,
    IF( ABS(d1.dt1-d2.dt1)=0,1,0) +
    IF( ABS(d1.dt1-d2.dt2)=0,1,0) +
    IF( ABS(d1.dt1-d2.dt3)=0,1,0) +
    IF( ABS(d1.dt1-d2.dt4)=0,1,0) +
    IF( ABS(d1.dt2-d2.dt1)=0,1,0) +
    IF( ABS(d1.dt2-d2.dt2)=0,1,0) +
    IF( ABS(d1.dt2-d2.dt3)=0,1,0) +
    IF( ABS(d1.dt2-d2.dt4)=0,1,0) +
    IF( ABS(d1.dt3-d2.dt1)=0,1,0) +
    IF( ABS(d1.dt3-d2.dt2)=0,1,0) +
    IF( ABS(d1.dt3-d2.dt3)=0,1,0) +
    IF( ABS(d1.dt3-d2.dt4)=0,1,0) +
    IF( ABS(d1.dt4-d2.dt1)=0,1,0) +
    IF( ABS(d1.dt4-d2.dt2)=0,1,0) +
    IF( ABS(d1.dt4-d2.dt3)=0,1,0) +
    IF( ABS(d1.dt4-d2.dt4)=0,1,0) AS mcount
FROM gtemp AS d1 , gtemp AS d2 WHERE d1.Week IS NOT NULL AND d2.Week IS NOT NULL AND d1.Week > d2.Week order by Week1 DESC, Week2 DESC limit 200000;

如果您不想在視圖架構中看到INT37,則可以嘗試使用顯式強制類型轉換為unsigned

CREATE OR REPLACE VIEW gtemp_view AS
    SELECT
    d1.Week AS Week1,
    d2.Week AS Week2,
    cast( 
    (IF( ABS(d1.dt1-d2.dt1)=0,1,0) +
    IF( ABS(d1.dt1-d2.dt2)=0,1,0) +
    IF( ABS(d1.dt1-d2.dt3)=0,1,0) +
    IF( ABS(d1.dt1-d2.dt4)=0,1,0) +
    IF( ABS(d1.dt2-d2.dt1)=0,1,0) +
    IF( ABS(d1.dt2-d2.dt2)=0,1,0) +
    IF( ABS(d1.dt2-d2.dt3)=0,1,0) +
    IF( ABS(d1.dt2-d2.dt4)=0,1,0) +
    IF( ABS(d1.dt3-d2.dt1)=0,1,0) +
    IF( ABS(d1.dt3-d2.dt2)=0,1,0) +
    IF( ABS(d1.dt3-d2.dt3)=0,1,0) +
    IF( ABS(d1.dt3-d2.dt4)=0,1,0) +
    IF( ABS(d1.dt4-d2.dt1)=0,1,0) +
    IF( ABS(d1.dt4-d2.dt2)=0,1,0) +
    IF( ABS(d1.dt4-d2.dt3)=0,1,0) +
    IF( ABS(d1.dt4-d2.dt4)=0,1,0)) 
    AS UNIGNED) mcount
FROM gtemp AS d1 , gtemp AS d2 
WHERE d1.Week IS NOT NULL 
AND d2.Week IS NOT NULL 
AND d1.Week > d2.Week 
order by Week1 DESC, Week2 DESC limit 200000;

無論如何,強制轉換應該以幾種方式影響性能。相反,INT37數據類型不應導致明顯的性能下降

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM