¡¡¡ÔÚÊý¾Ý¿â±à³ÌÖÐ,Ë÷ÒýÎļþ¶ÔÓÚ¸ÄÉÆÊý¾Ý²éѯËÙ¶ÈÓÐמÙ×ãÇáÖØµÄ×÷ÓÃ,³ä·ÖʹÓÃË÷ÒýÎļþ¿ÉÒÔ¼«´ó¸ÄÉÆÊý¾Ý¿âÓ¦ÓóÌÐòµÄÐÔÄÜ,ÕâÒ»µã¿ÖÅÂÊÇÄÑÒÔ·ñÈϵÄ.
¡¡¡¡ÔÚÓ¦Óùý³ÌÖÐ,Óû§µÄ²éѯÌõ¼þ¿ÉÄÜÊǶàÖÖ¶àÑùµÄ,Èç¹ûÄܸù¾ÝÓû§²éѯ½¨Á¢ºÍÑ¡ÔñË÷Òý,¶ÔÓÚ±£Ö¤Ó¦ÓóÌÐòµÄÐÔÄÜ,ÎÞÒÉÊǺÜÓаïÖúµÄ.
¡¡¡¡ÁíÍâ,ÓÉÓÚÍ£µçµÈÒâÍâʹʺÜÈÝÒ×Ôì³ÉÊý¾Ý¿âÖеÄË÷ÒýÎļþδ¼°Ê±¸üÐÂÉõÖÁÓÚËð»µ,´ËʱÈç¹ûÓ¦ÓóÌÐòÔÙ³ö¼¸¸ö´íÎóÐÅÏ¢,ÎÞÒɽ«Ê¹Óû§µÄ´¦¾³Ñ©ÉϼÓ˪.
¡¡¡¡Òò¶ø,¶¯Ì¬Î¬»¤Êý¾Ý¿âË÷ÒýÎļþ,½«Ê¹ÄãµÄÊý¾Ý¿âÓ¦ÓóÌÐò¸üÓÐÎȶ¨ÐԺͿɿ¿ÐÔ.±ÊÕß½«ÒÔDelphi±à³ÌÖг£ÓõÄParadoxÊý¾Ý¿âΪÀý,½éÉÜÊý¾Ý¿âË÷ÒýÎļþµÄ¶¯Ì¬Î¬»¤.
¡¡¡¡Paradox Êý ¾Ý ±í Ë÷ Òý ·Ö Ϊ Ö÷ Ë÷ Òý(Primary Index) ¼´ ¹Ø ¼ü ×Ö(Primary Key) Ë÷ Òý ºÍ ´Î Ë÷ Òý(Secondary Index), Æä ÖÐ Ö÷ Ë÷ Òý ¶Ô Ó¦.PX ÎÄ ¼þ, ´Î Ë÷ Òý ¶Ô
Ó¦.XG* ºÍ.YG* ÎÄ ¼þ.
Ò». ´´ ½¨ ±í Ë÷ Òý
¡¡¡¡(1) ÓÃTable.AddIndex À´ ʵ ÏÖ
¡¡¡¡·½ ·¨:AddIndex( IndexName,FieldNames,Options )
¡¡¡¡Æä ÖÐ:( Ïê ¼ûDelphi °ï Öú)
¡¡¡¡IndexName: Ë÷ Òý Ãû ³Æ, ½ö ÔÚ Ö¸ ¶¨ ´Î Ë÷ Òý ʱ ÓÐ ×÷ ÓÃ.
¡¡¡¡FieldNames: Ë÷ Òý Óò, ¿É Ö¸ ¶¨ ¶à ¸ö Óò, ¸÷ Óò Ö® ¼ä Óà ·Ö ºÅ ¸ô ¿ª, ÈçField1;Field2;Field3
¡¡¡¡Options: Ë÷ Òý Ñ¡ Ïî, ¿É Ϊ[ixPrimary, ixUnique, ixDescending, ixCaseInsensitive,
ixExpression]
¡¡¡¡Æä ÖÐ:
¡¡¡¡ixPrimary : ½¨ Á¢ µÄ Ë÷ Òý Ϊ Ö÷ Ë÷ Òý( ²» ÊÊ Óà ÓÚdBase Êý ¾Ý ±í).
¡¡¡¡ixUnique : ²» ÔÊ Ðí ÖØ ¸´ Öµ µÄ Ë÷ Òý.
¡¡¡¡ixDescending: °´ ½µ Ðò Ë÷ Òý.
¡¡¡¡ixCaseInsensitive: Ë÷ Òý ÅÅ Ðò ʱ °´ ºö ÂÔ ´ó С д( ²» ÊÊ Óà ÓÚdBase Êý ¾Ý
±í).
¡¡¡¡ixExpression: ½¨ Á¢ ±í ´ï ʽ Ë÷ Òý( ÊÊ Óà ÓÚDelphi3.0, ½ö ÊÊ Óà ÓÚdBase Êý
¾Ý ±í).
¡¡¡¡ixNonMaintained: ÊÇ ·ñ ²» Ðè ÒªBDE ×Ô ¶¯ ά »¤( ÊÊ Óà ÓÚDelphi1.0).
¡¡¡¡ÏÂ Ãæ ÊÇ Ò» ¸ö Àý ×Ó:
¡¡¡¡¼Ù Éè ÓÐ Ò» ¸ö ´æ ·Å ͨ Ѷ ¼ Êý ¾Ý ±íMyComm.DB( Àà ÐÍ ÎªParadox) ´æ ·Å ÓÚ ±¾ µØ
Ä¿ ¼d:\mynote ÏÂ, ÏÖ ½¨ Á¢ Ò» ¸ö Ö÷ Ë÷ Òý( Ë÷ Òý Óò Ϊ ±à ºÅID) ºÍ Ò» ¸ö ´Î Ë÷ Òý( Ë÷ Òý
Óò Ϊ ±à ºÅID ºÍ ÐÕ ÃûName, Ë÷ Òý Ãû ³Æ ΪNameIndex).
with table1 do
begin
close;
DatabaseName := d:\MyNote;
TableName := MyComm.DB;
Open;
{½¨Á¢Ö÷Ë÷Òý }
AddIndex(,ID,[ixPrimary]);
{½¨Á¢´ÎË÷Òý }
AddIndex(NameIndex,ID;Name,[]);
close;
end;
(2)ÓÃSQLÀ´ÊµÏÖ
¶ÔParadoxÊý¾Ý±íÀ´Ëµ,ÓÃSQLÖ»Äܽ¨Á¢´ÎË÷Òý.
ÔÚSQLÓï·¨ÖÐ,ÓÃÀ´½¨Á¢Ë÷ÒýµÄÓï¾äÊÇ:
Create Index IndexName On TableName
(IndexField1,IndexField2,..)
ÆäÖÐ:
IndexNameΪһ¸ö´ÎË÷ÒýµÄÃû³Æ,ÈçMySecIndex1µÈ.
TableNameΪ¶ÔÓ¦Êý¾Ý±íµÄÃû³Æ,ÈçMyTableµÈ.
TableNameºóÃæÎªË÷ÒýÓòÁбí,ËùÓÐË÷ÒýÓòÓÐÔ²À¨ºÅÀ¨ÆðÀ´,
¸÷Ë÷ÒýÓòÖ®¼äÓöººÅ¸ô¿ª.
¡¡
¡¡¡¡ÏÂ Ãæ ÊÇ Ò» ¸ö Àý ×Ó:
¡¡¡¡¼Ù Éè ÓÐ Ò» ¸ö ´æ ·Å ͨ Ѷ ¼ Êý ¾Ý ±íMyComm.DB( Àà ÐÍ ÎªParadox) ´æ ·Å ÓÚ ±¾ µØ
Ŀ ¼
¡¡¡¡d:\mynote ÏÂ, ÏÖ ½¨ Á¢ Ò» ¸ö ´Î Ë÷ Òý( Ë÷ Òý Óò Ϊ ±à ºÅID ºÍ ÐÕ ÃûName, Ë÷ Òý
Ãû ³Æ ΪNameIndex).
with query1 do
begin
close;
DatabaseName := d:\MyNote;
{½¨Á¢´ÎË÷ÒýNameIndex}
sql.clear;
sql.add( Create Index NameIndex On MyComm(ID,Name) );
execSql;
end;
¡¡
¶þ. ɾ ³ý ±í Ë÷ Òý
¡¡¡¡(1) ÓÃTable.DeleteIndex À´ ʵ ÏÖ
¡¡¡¡DeleteIndex Ö» ÄÜ É¾ ³ý ´Î Ë÷ Òý Ãû ³Æ.
¡¡¡¡·½ ·¨:DeleteIndex( IndexName )
¡¡¡¡Æä ÖÐ:( Ïê ¼ûDelphi °ï Öú)
¡¡¡¡IndexName: ´Î Ë÷ Òý Ãû ³Æ.
¡¡¡¡ÏÂ Ãæ ÊÇ Ò» ¸ö Àý ×Ó:
¡¡¡¡¼Ù Éè ÓÐ Ò» ¸ö ´æ ·Å ͨ Ѷ ¼ Êý ¾Ý ±íMyComm.DB( Àà ÐÍ ÎªParadox) ´æ ·Å ÓÚ ±¾ µØ
Ŀ ¼
¡¡¡¡d:\mynote ÏÂ, ÏÖ ÓÐ Ò» ¸ö ´Î Ë÷ Òý( Ë÷ Òý Óò Ϊ ±à ºÅID ºÍ ÐÕ ÃûName, Ë÷ Òý Ãû
³Æ ΪNameIndex), ½« ɾ ³ý Ö®.
with table1 do
begin
close;
Exclusive := true;
DatabaseName := d:\MyNote;
TableName := MyComm.DB;
Open;
{ɾ³ý´ÎË÷Òý}
DeleteIndex(NameIndex);
close;
end;
¡¡
¡¡¡¡(2) ÓÃSQL À´ ʵ ÏÖ
¡¡¡¡ÔÚSQL Óï ·¨ ÖÐ, Óà À´ ɾ ³ý Ë÷ Òý µÄ Óï ¾ä ÊÇ:
¡¡¡¡Drop Index TableName.IndexName
¡¡¡¡Òª ɾ ³ý ´Î Ë÷ Òý ʱ,IndexName Ϊ Ò» ¸ö ´Î Ë÷ Òý µÄ Ãû ³Æ, ÈçMyTable.MySecIndex1
µÈ.
¡¡¡¡Òª ɾ ³ý Ö÷ Ë÷ Òý ʱ,IndexName Ϊprimary, ÈçMyTable.primary; Öµ µÃ
×¢ Òâ µÄ ÊÇ, ÔÚ É¾ ³ý Ö÷ Ë÷ Òý ³É ¹¦ ºó, Êý ¾Ý ±í µÄ Ëù ÓÐ ´Î Ë÷ Òý Ò² ×Ô ¶¯ ɾ ³ý.
¡¡¡¡ÏÂ Ãæ ÊÇ Ò» ¸ö Àý ×Ó:
¡¡¡¡¼Ù Éè ÓÐ Ò» ¸ö ´æ ·Å ͨ Ѷ ¼ Êý ¾Ý ±íMyComm.DB( Àà ÐÍ ÎªParadox) ´æ ·Å ÓÚ ±¾ µØ
Ŀ ¼
¡¡¡¡d:\mynote ÏÂ, ÒÑ ¶¨ Òå Ò» ¸ö Ö÷ Ë÷ Òý( Ë÷ Òý Óò Ϊ ±à ºÅID) ºÍ Ò» ¸ö ´Î Ë÷ Òý( Ë÷
Òý Óò Ϊ ±à ºÅID ºÍ ÐÕ ÃûName, Ë÷ Òý Ãû ³Æ ΪNameIndex).
¡¡¡¡ÏÖ ÔÚ Òò Ϊ Ë÷ Òý Ëð »µ, Òª ɾ ³ý Ë÷ Òý, ÒÔ ±ã ÖØ РË÷ Òý.
with query1 do
begin
close;
DatabaseName := d:\MyNote;
{ɾ³ý´ÎË÷ÒýNameIndex }
sql.clear;
sql.add( Drop Index MyComm.NameIndex );
execSql;
{ɾ³ýÖ÷Ë÷Òý }
sql.clear;
sql.add( Drop Index MyComm.Primary );
execSql;
end;
¡¡
Èý.×¢ÒâÊÂÏî:
¡¡¡¡(1)ÔÚË÷Òý¸ü¸Äʱ,Ó¦±£Ö¤¶ÔÓ¦µÄÊý¾Ý±í¿ÉÒÔÒÔ¶ÀÕ¼·½Ê½(Exclusive=true)
´ò¿ª,·ñÔò»áÒýÆð´íÎó.
¡¡¡¡(2)ÉÏÊö·½·¨ÂÔ¼ÓÐ޸ĺó,Ò²¿ÉÓÃÓÚdBase,OracleµÈÆäËüÊý¾Ý¿âµÄÊý
¾Ý±í.
¡¡¡¡(3)Èç¹ûÐèÒªÖØÐ¶ÔË÷ÒýÎļþ½øÐÐË÷Òý,Çë²Î¿¼BDEµÄDbiº¯Êý˵Ã÷:
¡¡¡¡RegenIndex,RegenIndexes.
¡¡¡¡(4)ÒÔÉϳÌÐòÔÚDelphi3.0ϲâÊÔͨ¹ý¡£
|